Войти

Показать полную графическую версию : Использование ImageMagick


Igor_I
14-03-2009, 14:14
Может кто использует ImageMagick.
Не получается выставить компрессию.

// load an image
$img = new Imagick('upload/313/pNeDUU8F.jpg');

// compression methods, see "Contants"-page for Imagick
$img->setCompression(Imagick::COMPRESSION_JPEG);

// a value between 1 and 100, 1 = high compression, 100 low compression
$img->setCompressionQuality(100);

// set content type
header("Content-type: image/jpeg");

// write image
echo $img->getImageBlob();
Качество меняю от 40 до 100, размер файла как был 307 кб, так и остаётся.

Igor_I
14-03-2009, 17:43
Как сказал Mikko надо писать writeimage

$img1 = new Imagick('upload/FJQKMwJe.png');
$img1->setImageFormat('jpg');
$img1->setImageCompression(Imagick::COMPRESSION_JPEG);
$img1->setImageCompressionQuality(50);
$img1->writeImage('tmp/1.jpg');
$s1=$img1->getImageSize();
$img1->clear();
$img1->destroy();

$img2 = new Imagick('upload/FJQKMwJe.png');
$img2->setImageCompression(Imagick::COMPRESSION_JPEG);
$img2->setImageCompressionQuality(75);
$img2->writeImage('tmp/2.jpg');
$s2= $img2->getImageSize();
$img2->clear();
$img2->destroy();

$img3 = new Imagick('upload/FJQKMwJe.png');
$img3->setImageCompression(Imagick::COMPRESSION_JPEG);
$img3->setImageCompressionQuality(90);
$img3->writeImage('tmp/3.jpg');
$s3= $img3->getImageSize();

echo $s1." = ".$s2." = ".$s3;

159887 = 218540 = 369199

$img1 = new Imagick('upload/FJQKMwJe.png');
$img1->setImageFormat('jpg');
$img1->setImageCompression(Imagick::COMPRESSION_JPEG);
$img1->setImageCompressionQuality(50);
#$img1->writeImage('tmp/1.jpg');
$s1=$img1->getImageSize();
$img1->clear();
$img1->destroy();

$img2 = new Imagick('upload/FJQKMwJe.png');
$img2->setImageCompression(Imagick::COMPRESSION_JPEG);
$img2->setImageCompressionQuality(75);
#$img2->writeImage('tmp/2.jpg');
$s2= $img2->getImageSize();
$img2->clear();
$img2->destroy();

$img3 = new Imagick('upload/FJQKMwJe.png');
$img3->setImageCompression(Imagick::COMPRESSION_JPEG);
$img3->setImageCompressionQuality(90);
#$img3->writeImage('tmp/3.jpg');
$s3= $img3->getImageSize();

echo $s1." = ".$s2." = ".$s3;

347346 = 347346 = 347346

Но я правда не согласен с таким вариантом.

Возник другой вопрос, как добиться маленького размера в PNG.

Igor_I
18-03-2009, 00:43
До меня дошло почему так :)
ImageMagick - стороняя программа, К памяти в PHP она не имеет никакого отношения. Вот поэтому и надо записать на диск.




© OSzone.net 2001-2012