Изменение размера PNG без потери качества и прозрачности

Я должен изменить размеры изображений, потому что мы загружаем печатные изображения в высоком разрешении и для предварительного просмотра людям не нужно изображение 4000px +. Некоторые изображения используют цветовое пространство rgb «eci», а другие используют цветовое пространство srgb. У файлов srgb нет проблем, но eci выглядит немного бесцветнее, чем раньше. И когда я загружаю прозрачное изображение, оно не идеально прозрачное. Есть ли решение? Когда я изменяю размер и изображение в формате png, я использую следующую дополнительную функцию.

private function imagetranstowhite($trans) {
// Create a new true color image with the same size
$w = imagesx($trans);
$h = imagesy($trans);
$white = imagecreatetruecolor($w, $h);

// Fill the new image with white background
$bg = imagecolorallocate($white, 255, 255, 255);
imagefill($white, 0, 0, $bg);

// Copy original transparent image onto the new image
imagecopy($white, $trans, 0, 0, 0, 0, $w, $h);

return $white;
}

у кого-нибудь есть решение? Imagemagick вместо gdlib тоже подойдет.

2

Решение

Не делайте PNG больше, виртуально. Вместо этого начните с такого большого разрешения PNG, которое вам потребуется, а затем практически уменьшите его при необходимости. Таким образом, вы сохраните разрешение PNG, и вам больше не придется с ним связываться, после этого. Это самое быстрое, простое и лучшее решение.

-2

Другие решения

Других решений пока нет …