无法将ImageMagick与openEXR一起使用来更改EXR文件的通道深度

时间:2019-01-28 10:28:42

标签: imagemagick openexr

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

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

identify -verbose“ Desk.exr”

它提供的通道深度为8位。

  格式:EXR(高动态范围(HDR))
  类别:DirectClass
  几何:644x874 + 0 + 0
  单位:未定义
  色彩空间:RGB
  类型:TrueColorAlpha
  基本类型:未定义
  Endianess:未定义
  深度: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位上工作。

1 个答案:

答案 0 :(得分:0)

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

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