尝试将24 bpp位图转换为黑色& CCITT group 4压缩的白色TIFF。 结果是预期的TIFF 1 bpp图像,但它是未压缩的。
我正在使用具有magickwand绑定的FreePascal,状态永远不会是MagickFalse:
MagickWandGenesis;
wand := NewMagickWand;
try
status := MagickReadImage(wand,PChar(InputFile));
if (status = MagickFalse) then HandleError;
status := MagickSetImageFormat(wand,'TIFF');
if (status = MagickFalse) then HandleError;
// convert to black & white/lineart
status := MagickSetImageType(wand,BilevelType);
if (status = MagickFalse) then HandleError;
// Group4Compression seems defined as 4 which
// apparently doesn't match imagemagick source. Bug:
//http://mantis.freepascal.org/view.php?id=26723
status := MagickSetImageCompression(wand,CompressionType(7)); //was Group4Compression
if (status = MagickFalse) then HandleError;
// Apparently set(image)compresionquality and
// stripimage are necessary to actually compress
status := MagickSetImageCompressionQuality(wand,0);
if (status = MagickFalse) then HandleError;
status := MagickStripImage(wand);
if (status = MagickFalse) then HandleError;
status := MagickWriteImage(wand,PChar(OutputFile));
if (status = MagickFalse) then HandleError;
finally
wand := DestroyMagickWand(wand);
end;
MagickWandTerminus;
http://filehorst.de/d/bmqjzDuB
的源图片http://filehorst.de/d/bluhjivq
的原始(错误)程序源代码http://filehorst.de/d/bhlbjHgp
处的原始(错误)输出图像我做错了什么?
编辑:已解决;非现场解决方案:FreePascal绑定中的CompressionType枚举可能已过时 - Group4Compression为4(IIRC),而应为7。
我将给予Mark Setchell赏金,因为他的回答是解决方案的必要部分。上面的源代码使用正确的版本更新。