Я загружу изображение bmp, используя Image Magisk, вот так:
#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;
}
Изображение, которое я загружаю, вот это:
Это BMP, и он может быть загружен здесь Фактический BMP, код компилируется нормально, но информация о разрешении неверна, программа выводит:
image: ../sd_nineteen/HSF_0/F0000_14/HSF_0_F0000_14_C0000_14_100_e_65.bmp
0
0
Что происходит, есть проблема с imagemagick или с моим изображением (я предполагаю, что есть проблема с моим изображением).
Мартин, кажется, что некоторые типы изображений (например, TIFF) поддерживают разрешения вида, которые отличаются от фактических размеров изображения. Документация по этой теме немногочисленна, но, судя по исходному коду, она также может иметь отношение к плотности изображения / информации о DPI.
Независимо от формата фактические размеры изображения могут быть получены с помощью columns()
а также rows()
методы класса Image, а не (x/y)Resolution()
методы.
Других решений пока нет …