我有以下代碼來操作和壓縮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