【发布时间】:2019-06-21 08:03:49
【问题描述】:
我想将 16 位 (HALF) exr 图像转换为 32 位 exr 图像。我正在尝试使用使用 openEXR 构建的 ImageMagick 来实现,但我无法做到这一点。
我已经构建 ImageMagick-7.0.8-23-Q8-windows-x64-static 并启用了 HDRI 标志。我正在使用 16 位 RGBA EXR 文件。当我运行以下命令时:
identify -verbose "Desk.exr"
它将通道深度设为 8 位。
格式:EXR(高动态范围 (HDR))
类:DirectClass
几何:644x874+0+0
单位:未定义
色彩空间:RGB
类型:TrueColorAlpha
基本类型:未定义
字节序:未定义
深度:8 位
渠道深度:
红色:8 位
绿色:8 位
蓝色:8 位
Alpha:1 位
我尝试使用转换工具通过指定 -depth 16 和 32 来更改它,但它仍然显示通道深度为 8 位。
int main() {
Magick::InitializeMagick("");
Magick::Image image;
Magick::Image image2;
Magick::Image image3;
try {
// Read a file into image object
image.read("D:\\IR\\EXR_Support\\Images\\Desk.exr");
//Set bit to 32
image.depth(32);
image.channelDepth(MagickCore::RGBChannels,32);
image.write("D:\\IR\\EXR_Support\\Images\\Desk_32Bits.exr");
}
catch (Magick::Exception &error_)
{
cout << "Caught exception: " << error_.what() << endl;
return 1;
}
return 0;
}
我检查了输出文件的通道深度,我设置了 32 位,但它也显示:
深度:8 位
渠道深度:
红色:8 位
绿色:8 位
蓝色:8 位
Alpha:1 位
我已经用 Quantum 8 位构建了 imagemagick,我希望它应该适用于 16 位和 32 位。
【问题讨论】:
-
EXR 将颜色数据存储为浮点值。使用 Q8 库版本对它们进行解码会显着降低精度。
标签: imagemagick openexr