gpt4 book ai didi

c++ - FreeImage 报告图像颜色类型错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:18 25 4
gpt4 key购买 nike

我有以下代码来加载纹理。

PackageTexture AssetImporter::ProcessTexture(const boost::filesystem::path& assetPath, const TextureType textureType)
{
PackageTexture texture;
const std::string filename = assetPath.filename().string();

FREE_IMAGE_FORMAT imageFormat = FreeImage_GetFileType(filename.c_str());
if (imageFormat == FIF_UNKNOWN)
imageFormat = FreeImage_GetFIFFromFilename(filename.c_str());

if (imageFormat == FIF_UNKNOWN || !FreeImage_FIFSupportsReading(imageFormat))
return texture;

FIBITMAP* bitmap = FreeImage_Load(imageFormat, assetPath.string().c_str());
if (!bitmap || !FreeImage_GetBits(bitmap) || !FreeImage_GetWidth(bitmap) || !FreeImage_GetHeight(bitmap))
return texture;

FREE_IMAGE_COLOR_TYPE colorType = FreeImage_GetColorType(bitmap);
uint32_t bitsPerPixel = FreeImage_GetBPP(bitmap);
uint32_t widthInPixels = FreeImage_GetWidth(bitmap);
uint32_t heightInPixels = FreeImage_GetHeight(bitmap);

....

FreeImage_Unload(bitmap);

return texture;
}

问题是,“colorType”给我错误的颜色类型。例如,一个 .jpg 被报告为 rgb24 而它是 bgr24,一个 BRGA32 的 .dds 图像被报告为 RGBA32。不过,.tga 图像被正确报告为 RGBA32。

可能是什么问题?

最佳答案

首先 FreeImage_GetColorType 返回位图颜色类型(它可以与原始图像不同)。

来自文档:

颜色模型颜色模型是一种抽象的数学模型,描述了颜色的表现方式表示为数字元组,通常表示为三个或四个值或颜色分量(例如 RGB 和 CMYK 是颜色模型)。 FreeImage主要使用RGB[A]颜色模型来表示内存中的像素。

关于c++ - FreeImage 报告图像颜色类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com