данный фрагмент кода уменьшает расширение изображения, но я сильно удивился увидев что вес новых картинок больше чем их оригинал с более высоки расширением, я так понимаю исходные изображения очень хорошо сжаты, но как средствами php сжать их так же хорошо после того как разрешения уменьшено. Возможно ли это??
foreach($_FILES as $file) {
if ($file['size'] < 2000000) {
$tmp_name = $file['tmp_name'];
$temp = getimagesize($file['tmp_name']);
$percent = 0.5;
list($width_orig, $height_orig) = $temp;
$width = $width_orig * $percent;
$height = $height_orig * $percent;
$canvas = imagecreatetruecolor($width, $height);
imageAlphaBlending($canvas, false);
imageSaveAlpha($canvas, true);
if ($image_name != "") {
$razr = array();
$razr = explode(".", $image_name);
$file_extension = end($razr);
$file_extension = mb_strToLower($file_extension);
}
function create_newImage($extension, $url) {
if ($extension == "jpg") {
return imagecreatefromjpeg($url);
}
if ($extension == "png") {
return ImageCreateFromPNG($url);
}
if ($extension == "gif") {
return imagecreatefromgif($url);
}
return (false);
}
$new_image = create_newImage($file_extension, $tmp_name); //
if ($new_image !== false) {
imagecopyresampled($canvas, $new_image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagepng($canvas, $tmp_name, 0);
imagedestroy($canvas);
}
if (move_uploaded_file($file['tmp_name'], $upload.$image_name)) {
$files = realpath($upload.$image_name);
$answer = "фаил загружен";
} else {
$error = true;
}
} else {
$answer = "фаил слишком большой";
}
}
Последовательные компрессия и декомпрессия JPEG, даже с хорошим параметром качества, например, 0.95, добавляют небольшой шум, потому что это сжатие с потерями. Алгоритм LZ77, используемый в PNG, ничего не знает про смысл JPEG и сжимает распакованные данные JPEG просто как бинарную строку, пытаясь найти в ней некоторую несложную логику. Логику в графическом шуме, не зная его природы, искать бесполезно, потому результат действий
может оказаться и показаться парадоксальным.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости