gpt4 book ai didi

C++ 在图像格式之间转换的快速方法

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:52 25 4
gpt4 key购买 nike

我有一些各种简单格式的内存图像,我需要快速将其转换为另一种格式。在目标格式包含 alpha channel 但源格式不包含的情况下,alpha 应取其完整值(例如,8 位目标 alpha channel 为 0xFF)。

我需要能够处理各种格式,例如 A8R8G8B8、R8G8B8A8、A1R4G4B4、R5G6B5 等。

任何这些格式之间的像素转换都很简单,但是我不想手动对每个组合进行编码,我也不希望有一个转换为通用格式的 2 pass 解决方案(例如 A8R8G8B8 )出于性能原因再次转换为最终格式之前,如果我想使用更高清晰度的格式,比如 A16B16G16R16 或 float ,我要么丢失一些转换为中间格式的数据,要么必须重写所有内容使用不同的更高清晰度格式...

理想情况下,id 就像某种枚举,其中包含每种格式的值,然后是一个单一的转换方法,例如

enum ImageFormat
{
FMT_A8R8G8B8,//32bit
FMT_A1R4G4B4,//16bit
FMT_R5G6B5,//16bit
FMT_A32R32G32B32F,//128bit floating point format
...
};
struct Image
{
ImageFormat Format;
size_t Width, Height;
size_t Pitch;
void *Data;
};
Image *ConvertImage(ImageFormat *targetFormat, const Image *sourceImage);

最佳答案

您可能需要 boost::gil

关于C++ 在图像格式之间转换的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1217236/

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