【发布时间】:2015-11-21 11:34:57
【问题描述】:
我创建了一个应用程序,用户可以在其中上传图像并选择要裁剪的区域。之后,图像应调整大小并使用所选坐标进行裁剪。
问题在于,这些图像是之后打印的,因此质量应尽可能接近原始图像(没有伪影或可见模糊)。
无论如何,调整大小会导致质量损失,调整大小后使用 unsharpmask() 会好很多,但它仍然因图像而异。
哦,有时颜色甚至与原始颜色不匹配:(
我知道这个函数的参数取决于图像的大小和饱和度等因素,但是有什么方法可以计算出最好的参数吗?
这是我目前所拥有的:
$origPath = "ThePathToTheFileOnTheServer.jpg";
move_uploaded_file( $_FILES['imagefile']['tmp_name'],$origPath);
$img = new Imagick();
$file_handle_for_viewing_image = fopen($origPath, 'a+');
$img->readImageFile($file_handle_for_viewing_image);
fclose($file_handle_for_viewing_image);
$img->setImageFormat('jpg');
$img->setImageCompression(Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(100);
$img->resizeImage ( 0, $targ_h, Imagick::FILTER_LANCZOS, 1);
$img->unsharpMaskImage(0 , 0.5 , 1 , 0.05);
$img->cropImage($targ_w, $targ_h, $xPos, 0);
$newimg = new Imagick();
$newimg->newImage($targ_w,$targ_h,new ImagickPixel('white'));
$newimg->setImageFormat('jpg');
$newimg->setImageCompression(Imagick::COMPRESSION_JPEG);
$newimg->setImageCompressionQuality(100);
$newimg->compositeImage($img,Imagick::COMPOSITE_OVER,0,0);
$newimg->writeImage("TheNewImage.jpg");
它做了它应该做的,但我能以某种方式计算 $img->unsharpMaskImage(0 , 0.5 , 1 , 0.05); 的参数吗?修复当前图像?
感谢您的帮助!
这是一个例子:
原文:
调整大小后:
【问题讨论】:
标签: php imagemagick image-manipulation image-resizing