UFUNCTION(BlueprintCallable, Category = "TextureFromDisk")
        static class UTexture2D* GetTexture2DFromDiskFile(const FString& FilePath);
class UTexture2D* UTextureFromDiskFunctionLibrary::GetTexture2DFromDiskFile(const FString& FilePath)
{
    TArray<uint8> RawFileData;
    UTexture2D* MyTexture = NULL;
    if (FFileHelper::LoadFileToArray(RawFileData, *FilePath /*"<path to file>"*/))
    {
        IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
        // Note: PNG format.  Other formats are supported
        IImageWrapperPtr ImageWrapper = ImageWrapperModule.CreateImageWrapper(EImageFormat::PNG);
        if (ImageWrapper.IsValid() && ImageWrapper->SetCompressed(RawFileData.GetData(), RawFileData.Num()))
        {
            const TArray<uint8>* UncompressedBGRA = NULL;
            if (ImageWrapper->GetRaw(ERGBFormat::BGRA, 8, UncompressedBGRA))
            {
                // Create the UTexture for rendering
                MyTexture = UTexture2D::CreateTransient(ImageWrapper->GetWidth(), ImageWrapper->GetHeight(), PF_B8G8R8A8);

                // Fill in the source data from the file
                void* TextureData = MyTexture->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
                FMemory::Memcpy(TextureData, UncompressedBGRA->GetData(), UncompressedBGRA->Num());
                MyTexture->PlatformData->Mips[0].BulkData.Unlock();

                // Update the rendering resource from data.
                MyTexture->UpdateResource();
            }
        }
    }
    return MyTexture;
}

别忘记头文件的引用

#include "Developer/ImageWrapper/Public/Interfaces/IImageWrapper.h"
#include "Developer/ImageWrapper/Public/Interfaces/IImageWrapperModule.h"

 

相关文章:

  • 2021-11-23
  • 2021-06-04
  • 2021-06-28
  • 2021-11-15
  • 2021-09-21
  • 2021-12-15
  • 2022-01-11
  • 2021-12-13
猜你喜欢
  • 2021-11-28
  • 2021-10-24
  • 2021-12-05
  • 2021-09-21
  • 2021-11-29
  • 2021-09-21
  • 2021-10-13
  • 2021-09-20
相关资源
相似解决方案