1

我想将 16 位 (HALF) exr 图像转换为 32 位 exr 图像。我正在尝试使用使用 openEXR 构建的 ImageMagick 来做到这一点,但我无法做到这一点。

我有 Build ImageMagick-7.0.8-23-Q8-windows-x64-static 并启用了 HDRI 标志。我正在使用 16 位 RGBA EXR 文件。当我运行以下命令时:

识别 -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 位。

4

1 回答 1

1

量子深度,也就是Q设置,是在编译时指定的。您不能在运行时增加它。

如果要处理 32 位图像,则需要使用 32 位量子深度重新编译。

于 2019-01-28T11:15:42.747 回答