This example shows how to set the compression type, set the compression quality, create a thumbnail and remove unnecessary data in order to reduce file size.
This will use the following functions in reference:
Imagick::setImageCompression
Imagick::setImageCompressionQuality
Imagick::stripImage
Imagick::thumbnailImage
Imagick::writeImage
<?php
$image = 'image.jpg';
$directory = '/path/to/image';
$image_location = $directory . "/" . $image;
$thumb_destination = $directory . "/t" . $image;
$compression_type = Imagick::COMPRESSION_JPEG;
$im = new Imagick($image_location);
$thumbnail = $im->clone;
$thumbnail->setImageCompression($compression_type);
$thumbnail->setImageCompressionQuality(40);
$thumbnail->stripImage();
$thumbnail->thumbnailImage(100,null);
$thumbnail->writeImage($thumb_destination);
?>
Now, obviously you don't have to do so much with the variables and the file location. I only used so many to demonstrate where the images are coming from and where they are going.
NOTE: The $thumbnail->thumbnailImage(100,null); keeps the aspect ration by setting the second parameter to null. Read about this at Imagick::thumbnailImage
There is another way to create thumbnails that works quite well if you want to crop the image rather than using the entire image. Check out Imagick::cropThumbnailImage
Imagick::setImageCompressionQuality
(バージョン情報なし。おそらく SVN 版にしか存在しないでしょう)
Imagick::setImageCompressionQuality — 画像の圧縮品質を設定する
説明
bool Imagick::setImageCompressionQuality
( int
$quality
)画像の圧縮品質を設定します。
パラメータ
-
quality -
画像の圧縮品質を表す整数値。
返り値
成功した場合に TRUE を返します。
エラー / 例外
エラー時に ImagickException をスローします。
snipes2083 [at] yahoo com
28-Mar-2010 11:35
