1

我将使用 Image Magisk 加载 bmp 图像,如下所示:

#include <Magick++.h> 
#include <iostream> 
using namespace std; 

int main(int argc,char **argv)
{ 
  Magick::InitializeMagick(*argv);

  Magick::Image image;
  try { 

    // Read a file into image object 
    image.read( argv[1] );

    cout << "image: " << argv[1] << endl; 
    cout << image.xResolution() << endl;
    cout << image.yResolution() << endl;

  } 
  catch( Magick::Exception &error_ ) 
    { 
      cout << "Caught exception: " << error_.what() << endl; 
      return 1; 
    } 
  return 0; 
}

我正在加载的图像是这个:

e

它是一个 bmp ,可以在这里加载实际 bmp,代码编译正常,但分辨率信息错误,程序输出:

image: ../sd_nineteen/HSF_0/F0000_14/HSF_0_F0000_14_C0000_14_100_e_65.bmp
0
0

发生了什么,imagemagick 或我的图像有问题(我猜我的图像有问题)。

4

1 回答 1

1

Martin,似乎某些图像类型(例如 TIFF)支持与实际图像尺寸不同的视图分辨率。关于该主题的文档很少,但查看源代码似乎也与图像密度/DPI 信息有关。

无论格式如何,都可以使用 Image 类的columns()rows()方法而不是(x/y)Resolution()方法来检索实际的图像尺寸。

于 2013-04-06T04:56:47.603 回答