虚幻引擎,写一个读取本地图片的方法
时间: 2024-01-26 14:02:16 浏览: 38
好的,以下是使用虚幻引擎读取本地图片的方法:
```c++
#include "IImageWrapper.h"
#include "IImageWrapperModule.h"
bool UMyClass::ReadLocalImage(const FString& FilePath, TArray<FColor>& OutImageData, int32& OutWidth, int32& OutHeight)
{
// 加载图片文件
TArray<uint8> CompressedData;
if (!FFileHelper::LoadFileToArray(CompressedData, *FilePath))
{
return false;
}
// 解压图片数据
IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
TSharedPtr<IImageWrapper> ImageWrapper = ImageWrapperModule.CreateImageWrapper(EImageFormat::PNG);
if (!ImageWrapper.IsValid() || !ImageWrapper->SetCompressed(CompressedData.GetData(), CompressedData.Num()))
{
return false;
}
// 获取图片信息
OutWidth = ImageWrapper->GetWidth();
OutHeight = ImageWrapper->GetHeight();
// 解码图片
TArray<uint8> RawData;
if (!ImageWrapper->GetRaw(ERGBFormat::BGRA, 8, RawData))
{
return false;
}
// 转换数据格式
OutImageData.Empty();
OutImageData.AddUninitialized(RawData.Num() / 4);
for (int32 i = 0; i < OutImageData.Num(); ++i)
{
OutImageData[i].B = RawData[i * 4];
OutImageData[i].G = RawData[i * 4 + 1];
OutImageData[i].R = RawData[i * 4 + 2];
OutImageData[i].A = RawData[i * 4 + 3];
}
return true;
}
```
使用方法:
```c++
FString FilePath = "D:/MyImage.png";
TArray<FColor> ImageData;
int32 Width, Height;
if (ReadLocalImage(FilePath, ImageData, Width, Height))
{
// 成功读取图片,可以使用ImageData、Width、Height了
}
else
{
// 读取图片失败
}
```
注意事项:
- 上述代码使用 PNG 格式读取图片,如果需要读取其他格式的图片,可以修改 `ImageWrapperModule.CreateImageWrapper` 的参数。
- 读取的图片数据存储在 `ImageData` 中,每个像素使用一个 FColor 结构体表示,其中 A 表示 alpha 通道,RGB 表示颜色。
- 如果需要使用其他的像素格式,可以修改 `ImageWrapper->GetRaw` 的参数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)