我有以下代码来操作和压缩TIFF图像。LZW压缩方法不使用imagick压缩TIFF图像
<?php
try{
$imagesrc = "C:\\server\\www\\imagick\\src.tif";
$imagedestination = "C:\\server\\www\\imagick\\converted.tif";
$im=new Imagick();
$im->readImage($imagesrc); //read image for manipulation
$im->setImageColorSpace(Imagick::COLORSPACE_CMYK);
$im->setImageDepth(8); //8 Bit
$im->setImageResolution(300,300); //set output resolution to 300 dpi
$im->setImageUnits(1); //0=undefined, 1=pixelsperInch, 2=PixelsPerCentimeter
$im->setImageCompression(Imagick::COMPRESSION_LZW);
$im->setImageCompressionQuality(80);
$im->writeImage($imagedestination);
$im->clear();
$im->destroy();
$im=NULL;
}catch(ImagickException $e){
echo "Could not convert image - ".$e->getMessage();
}
?>
源图像是19MB。当我使用此代码时,生成的TIF图像大约为25MB。也就是说,代码根本不压缩图像。此外,其它的压缩方法没有效果上得到的TIFF文件,但然而如果我使用的压缩方法Imagick::COMPRESSION_JPEG
,得到的图像是2MB
我不能使用JPEG压缩,因为我米使用所得TIFF图像与itextsharp
在PDF中嵌入。 JPEG压缩会导致itextsharp不支持的多条带tiff图像。
所以我的问题有两种可能的答案。而且其中的任何一个答案都适用于我
- 如何有效压缩tif?
- 如何将多条带tif图像转换为单条。
感谢
'源图像是19MB' - 这听起来像一个相当大的图像,因为COMPRESSION_LZW/q = 0.8会生成更大的文件。图像的尺寸是给定的,不能改变? – VolkerK
你的图片的尺寸是多少? –
@VolkerK,我们可以在质量上妥协,但不能在图像维度上妥协。图片尺寸为3655x3735像素。源图片尺寸和尺寸可能因用户上传的内容而异。 – WatsMyName