【问题标题】:Imagemagick resize images dynamicallyImagemagick 动态调整图像大小
【发布时间】: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


    【解决方案1】:

    您可以尝试在 Lab 色彩空间中调整大小,然后再转换回 sRGB。在命令行中,那将是

    convert input.jpg -colorspace Lab -resize ... -colorspace sRGB result.jpg
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多