Your question got me thinking, so I fixed the code and made it even more efficient! I am now loading the Texture2D in RGBA format, which is PF_R8G8B8A8.
**My C++ Code, Even More Faster Now!**
Notice how now I am not even storing the const references, **I am plugging directly into the FLinearColor constructor!**
```
UTexture2D* UVictoryBPFunctionLibrary::Victory_LoadTexture2D_FromFile_Pixels(const FString& FullFilePath,EJoyImageFormats ImageFormat,bool& IsValid, int32& Width, int32& Height, TArray<FLinearColor>& OutPixels)
{
//Clear any previous data
OutPixels.Empty();
IsValid = false;
UTexture2D* LoadedT2D = NULL;
IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
IImageWrapperPtr ImageWrapper = ImageWrapperModule.CreateImageWrapper(GetJoyImageFormat(ImageFormat));
//Load From File
TArray<uint8> RawFileData;
if (!FFileHelper::LoadFileToArray(RawFileData, *FullFilePath)) return NULL;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Create T2D!
if (ImageWrapper.IsValid() && ImageWrapper->SetCompressed(RawFileData.GetData(), RawFileData.Num()))
{
const TArray<uint8>* UncompressedRGBA = NULL;
if (ImageWrapper->GetRaw(**ERGBFormat::RGBA**, 8, UncompressedRGBA))
{
LoadedT2D = UTexture2D::CreateTransient(ImageWrapper->GetWidth(), ImageWrapper->GetHeight(), ****PF_R8G8B8A8****);
//Valid?
if(!LoadedT2D) return NULL;
//~~~~~~~~~~~~~~
//Out!
Width = ImageWrapper->GetWidth();
Height = ImageWrapper->GetHeight();
const TArray<uint8>& ByteArray = *UncompressedRGBA;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
for(int32 v = 0; v < ByteArray.Num(); v+=4)
{
if(!ByteArray.IsValidIndex(v+3))
{
break;
}
**OutPixels.Add(
FLinearColor(
ByteArray[v], //R
ByteArray[v+1], //G
ByteArray[v+2], //B
ByteArray[v+3] //A
)
);**
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Copy!
void* TextureData = LoadedT2D->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(TextureData, UncompressedRGBA->GetData(), UncompressedRGBA->Num());
LoadedT2D->PlatformData->Mips[0].BulkData.Unlock();
//Update!
LoadedT2D->UpdateResource();
}
}
// Success!
IsValid = true;
return LoadedT2D;
}
```
Load Image From File and Get Pixel Data!
New Node Release Post is here!
**Plugin Download** ( Tiny file, about 0.5 MB )
It's ready now, top-most link, April 17th!
**Latest Download From the UE4 Wiki Site **
https://wiki.unrealengine.com/File:VictoryPlugin.zip
β₯