Php Imagemagick动态调整图像大小
我已经创建了一个应用程序,用户可以在这里上传图像并选择要裁剪的区域。之后,应调整图像的大小,并使用选定的坐标进行裁剪 问题是,这些图像是事后打印的,因此质量应尽可能接近原始图像(没有瑕疵或可见模糊) 无论如何,调整大小会导致质量下降,并且在调整大小后使用unsharpmask()会使质量提高很多,但每个图像的效果仍然不同 哦,有时颜色甚至与原作不匹配:( 我知道这个函数的参数取决于图像的大小和饱和度,但是有没有办法计算出最佳参数 以下是我目前掌握的情况:Php Imagemagick动态调整图像大小,php,imagemagick,image-manipulation,image-resizing,Php,Imagemagick,Image Manipulation,Image Resizing,我已经创建了一个应用程序,用户可以在这里上传图像并选择要裁剪的区域。之后,应调整图像的大小,并使用选定的坐标进行裁剪 问题是,这些图像是事后打印的,因此质量应尽可能接近原始图像(没有瑕疵或可见模糊) 无论如何,调整大小会导致质量下降,并且在调整大小后使用unsharpmask()会使质量提高很多,但每个图像的效果仍然不同 哦,有时颜色甚至与原作不匹配:( 我知道这个函数的参数取决于图像的大小和饱和度,但是有没有办法计算出最佳参数 以下是我目前掌握的情况: $origPath = "ThePat
$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->unshapmaskimage(0,0.5,1,0.05)的参数来修复当前图像吗
谢谢你的帮助
下面是一个例子:
原件:
调整大小后:
您可以尝试在
实验室
颜色空间中调整大小,然后再转换回sRGB。在命令行中,这将是
convert input.jpg -colorspace Lab -resize ... -colorspace sRGB result.jpg
您可以尝试在
Lab
颜色空间中调整大小,然后再转换回sRGB
convert input.jpg -colorspace Lab -resize ... -colorspace sRGB result.jpg