У меня проблема с созданием изображения TIFF со сжатием JPEG с использованием Magick ++, C ++ API ImageMagick.Когда я использую инструмент преобразования следующим образом, он работает:
convert 1.jpg -compress JPEG 1.tiff
Когда я хочу сделать то же самое в C ++, это выглядит так:
Image img("1.jpg");
img.compressType(JPEGCompression);
img.write("1.tiff");
Но этот код делает не работа.Он генерирует исключение при попытке создать файл «1.tiff»:
Unhandled exception at 0x74ecb727 in test.exe: Microsoft C++ exception: Magick::ErrorCoder at memory location 0x002ffc2c..
Указывает на Строка 103 в файле Thread.cpp
Это ошибка или что-то не так с моим кодом?
Обновление
Я изменил код на это:
try{
Image img(Desktop+"1.jpg");
img.compressType(JPEGCompression);
img.write(Desktop+"1.tiff");
}catch(Exception e){
cout << e.what() << endl;
}
Вывод: test.exe: CompressionNotSupported `JPEG '@ error / tiff.c / WriteTIFFImage / 2611
Итак ... похоже, что он не поддерживается.Вопрос в том, почему он поддерживает инструмент преобразования?Кто-нибудь знает способ сделать это?
Обновление
Я создал пустой новый проект, перекомпилировал ImageMagick, а затем добавил следующие параметры:
дополнительные каталоги:
c:/imagemagick/magick++/lib;c:/imagemagick/
дополнительные каталоги lib:
c:/imagemagick/visualmagick/lib/
libs:
CORE_RL_bzlib_.lib;CORE_RL_coders_.lib;CORE_RL_filters_.lib;CORE_RL_jbig_.lib;CORE_RL_jp2_.lib;CORE_RL_jpeg_.lib;CORE_RL_lcms_.lib;CORE_RL_libxml_.lib;CORE_RL_magick_.lib;CORE_RL_Magick++_.lib;CORE_RL_png_.lib;CORE_RL_tiff_.lib;CORE_RL_ttf_.lib;CORE_RL_wand_.lib;CORE_RL_xlib_.lib;CORE_RL_zlib_.lib;CORE_RL_wmf_.lib;X11.lib;Xext.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;wsock32.lib;winmm.lib;
, а затем попытался запустить следующий код:
#include <iostream>
#include <Magick++.h>
using namespace std;
using namespace Magick;
int main() {
Image img("c:/users/patrik stutz/Desktop/1.jpg");
img.compressType(JPEGCompression);
img.write("c:/users/patrik stutz/Desktop/1.tiff");
return 0;
}
И это сработало !!Все с использованием VS2010.Понятия не имею, почему он не работал в моем другом проекте с такими же настройками ...