程序要怎么读取到指定路径下的图片文件

[复制链接]
查看2212 | 回复2 | 2019-7-17 17:09:57 | 显示全部楼层 |阅读模式
如题,哪位大佬能给一个思路么
rrfetch | 2019-7-17 22:58:22 | 显示全部楼层

这个是普通文本文件的。我估计你用 LoadFileToArray 可以读二进制的图片文件
读出来以后,再想办法转换成纹理来显示吧

[mw_shl_code=cpp,true]void PicReader::SaveConf()
{
        TArray<FString> item;
        item.Add(TEXT("Resolution=1920x1080"));
        item.Add(TEXT("RenderAPI=VULKAN"));
        item.Add(TEXT("Server=192.168.1.100"));

#if PLATFORM_WINDOWS
        // Windows 下测试用
        const TCHAR * confPath = TEXT("../conf/test.conf");
#else
        // Linux 下保存到不同的目录
        const TCHAR * confPath = TEXT("../../../../conf/test.conf");
#endif
       
        // 会直接覆盖原有的文件
        // WindowsNoEditor\FileRW\Binaries\Win64\FileRW.exe
        FFileHelper::SaveStringArrayToFile(item, confPath);

        TArray<FString> conf;

        FFileHelper:oadFileToStringArray(conf, confPath);

        for (FString line : conf) {
                UE_LOG(LogTemp, Warning, TEXT("Read line : %s"), *line);
        }
}[/mw_shl_code]

回复 支持 反对

使用道具 举报

Everg1ow_ | 2019-7-18 09:18:23 | 显示全部楼层
[mw_shl_code=cpp,true]UTexture2D * AMyQRCode::GetTexture2DFromDiskFile()
{
        TArray<uint8> RawFileData;
        UTexture2D* MyTexture = NULL;
        FString FilePath = FPaths:rojectDir() + "TargetQRCode.bmp";
        if (FFileHelper:oadFileToArray(RawFileData, *FilePath /*"<path to file>"*/))
        {
                IImageWrapperModule& ImageWrapperModule = FModuleManager:oadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
                // Note: PNG format.  Other formats are supported
                TSharedPtr<IImageWrapper> ImageWrapper = ImageWrapperModule.CreateImageWrapper(EImageFormat::BMP);
                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->latformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
                                FMemory::Memcpy(TextureData, UncompressedBGRA->GetData(), UncompressedBGRA->Num());
                                MyTexture->latformData->Mips[0].BulkData.Unlock();

                                // Update the rendering resource from data.
                                MyTexture->UpdateResource();
                        }
                }
        }
        return MyTexture;
}[/mw_shl_code]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

98

主题

777

回帖

4890

积分

高阶编码师

积分
4890