UE4 读取本地图片
来源:互联网 发布:windows 8.1专业版激活 编辑:程序博客网 时间:2024/05/17 04:43
参考链接:https://answers.unrealengine.com/questions/235086/texture-2d-shows-wrong-colors-from-jpeg-on-html5-p.html
我这里,不能将图片全放工程之中,需要在外部在加载图片资源,再来使用
1.通过本地图片路径,获取图片,并将其数据转为uint类型的数组
#pragma region 通过本地图片转换成UTexture2DUTexture2D* AMyProjectGameMode::GetLocalTexture(const FString &_TexPath){UTexture2D* OutTex=NULL;IImageWrapperModule& imageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));IImageWrapperPtr imageWrapper = imageWrapperModule.CreateImageWrapper(EImageFormat::PNG);TArray<uint8> OutArray;if(FFileHelper::LoadFileToArray(OutArray, *_TexPath)){if (imageWrapper.IsValid()&&imageWrapper->SetCompressed(OutArray.GetData(), OutArray.Num())){const TArray<uint8>* uncompressedRGBA = NULL;if (imageWrapper->GetRaw(ERGBFormat::RGBA, 8, uncompressedRGBA)){const TArray<FColor> uncompressedFColor=uint8ToFColor(*uncompressedRGBA);OutTex=TextureFromImage(imageWrapper->GetWidth(),imageWrapper->GetHeight(),uncompressedFColor,true);}}}return OutTex;}#pragma endregion2.将uint8数组转为颜色数组
#pragma region 将uint8数组转为颜色数组TArray<FColor> AMyProjectGameMode::uint8ToFColor(const TArray<uint8> origin){TArray<FColor> uncompressedFColor;uint8 auxOrigin;FColor auxDst;for (int i = 0; i < origin.Num(); i++) {auxOrigin = origin[i];auxDst.R = auxOrigin;i++;auxOrigin = origin[i];auxDst.G = auxOrigin;i++;auxOrigin = origin[i];auxDst.B = auxOrigin;i++;auxOrigin = origin[i];auxDst.A = auxOrigin;uncompressedFColor.Add(auxDst);}return uncompressedFColor;}#pragma endregion3.将颜色数组赋值给Texture
#pragma region 将颜色数组赋值给TextureUTexture2D* AMyProjectGameMode::TextureFromImage(const int32 SrcWidth, const int32 SrcHeight, const TArray<FColor> &SrcData, const bool UseAlpha) {// 创建Texture2D纹理UTexture2D* MyScreenshot = UTexture2D::CreateTransient(SrcWidth, SrcHeight, PF_B8G8R8A8);// 锁住他的数据,以便修改uint8* MipData = static_cast<uint8*>(MyScreenshot->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE));// 创建纹理数据uint8* DestPtr = NULL;const FColor* SrcPtr = NULL;for (int32 y = 0; y<SrcHeight; y++){DestPtr = &MipData[(SrcHeight - 1 - y) * SrcWidth * sizeof(FColor)];SrcPtr = const_cast<FColor*>(&SrcData[(SrcHeight - 1 - y) * SrcWidth]);for (int32 x = 0; x<SrcWidth; x++){*DestPtr++ = SrcPtr->B;*DestPtr++ = SrcPtr->G;*DestPtr++ = SrcPtr->R;if (UseAlpha){*DestPtr++ = SrcPtr->A;}else{*DestPtr++ = 0xFF;}SrcPtr++;}}// 解锁纹理MyScreenshot->PlatformData->Mips[0].BulkData.Unlock();MyScreenshot->UpdateResource();return MyScreenshot;}#pragma endregion4.我这里建图片路径放在工程的相对路径下,调用GetLocalTexture函数,获取Texture2D
void AMyProjectGameMode::BeginPlay(){const FString _FilePath = FPaths::GameDir() + "video_logo.png";_UITex = GetLocalTexture(_FilePath);}5.注意别忘了,需要添加两个头文件
#include "Runtime/ImageWrapper/Public/Interfaces/IImageWrapper.h"#include "Runtime/ImageWrapper/Public/Interfaces/IImageWrapperModule.h"6.运行截图,我这里将获取的图片放在了UI界面上
7.我在读取jpg格式的图片的时候,颜色明显不对,读png的格式的时候,就完全正常,还未去寻找原因
0 0
- UE4 读取本地图片
- UE4 读取本地图片
- UE4读取本地XML文件
- UE4读取本地XML文件
- UE4读取本地XML文件
- 读取本地图片
- ViewPager读取本地图片
- html5读取本地图片
- C# 读取本地图片
- 前端本地读取图片
- UE4中读取和更改本地配置文件的方法
- 读取本地存储的图片
- android 读取本地超大图片
- Unity读取本地图片资源
- android读取手机本地图片
- JS img读取本地图片
- unity 读取本地图片--模板
- img标签读取本地图片
- 第四周—C语言 输出自己名的首字母
- 图像结构样式分开生成的生成模型论文代码
- 一个模拟问题
- Part 2 of 2 Method of complements作业
- leetcode_two sum
- UE4 读取本地图片
- unity中的TXT存储与读取
- 巨量奇幻炫酷照片来袭 - 人工智能艺术照片赏析
- keras中文文档
- dpdk环境搭建之命令搭建
- Linux的链接
- POJ 3735 Training little cats(矩阵快速幂)
- Weex $el(id) 与 $vm(id) 区别
- 数据结构之栈的简单实现