Я создал приложение, где пользователь может загрузить изображение и выбрать регион для обрезки. После этого изображение должно быть изменено и обрезано с выбранными координатами.
Проблема заключается в том, что эти изображения печатаются впоследствии, поэтому качество должно быть максимально приближено к исходному изображению (без артефактов или видимого размытия).
В любом случае изменение размера приводит к потере качества, а использование 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); исправить текущее изображение?
Спасибо за вашу помощь!
Вот пример:
оригинал:
после изменения размера:
Вы можете попробовать изменить размер в Lab
цветное пространство, а затем преобразование обратно в sRGB. В командной строке это будет
convert input.jpg -colorspace Lab -resize ... -colorspace sRGB result.jpg
Других решений пока нет …