|
||||||||||||
|
Imagecopyresampled против imagecopyresizedВ документации PHP описание функций imagecopyresampled и imagecopyresized из библиотеки GD практически идентично. Обе эти функции служат для изменения размера изображения, и принимают одинаковые параметры, вот только результат их работы заметно отличается на изображениях truecolor (JPEG, PNG), как видно на примерах, расположеных ниже. Imagecopyresampled помимо изменения размеров изображения, еще и сглаживает его (бикубическое сглаживание), что положительно сказывается на внешнем виде картинки и ее размере - изображение занимает меньше места на винчестере, чем обработанное функцией imagecopyresized. Зато функция PHP библиотеки GD imagecopyresized работает намного быстрее, и соответственно меньше нагружает сервер. Среднее время обработки изображения размером 1600х1200 ( Документацию по функциям библиотеки GD PHP imagecopyresampled() и imagecopyresized() можно посмотреть тут:
В большинстве случаев лучше всего использовать функцию GD imagecopyresampled, так как качество изображения получается лучше, при меньшем, в сравнении с imagecopyresized размере. Можно комбинировать эти 2 функции PHP, например, для уменьшения фотографии с 1600x1200 до 320x240 точек, сначала использовать imagecopyresized (уменьшение до 640x480 точек), а уже дальше imagecopyresampled (уменьшение с 640x480 до 320x240 точек). Таким способом достигается равновесие: увеличение скорости выполнения обработки изображений, при сохранении их приемлимого качества. Ниже приведен листинг скрипта, с помощью которого можно протестировать скорость обработки изображений функциями imagecopyresized() и imagecopyresampled(): Тест скорости обработки изображений функциями imagecopyresized и imagecopyresampled
function script_time_count($time_start, $quantity_sings = 3) { $quantity_sings = intval($quantity_sings); if ($quantity_sings < 0 or $quantity_sings > 8) $quantity_sings = 3; $time_format = explode(' ', $time_start); $time_start = $time_format[1] + $time_format[0]; $time_end = microtime(); $time_format = explode(' ', $time_end); $time_end = $time_format[1] + $time_format[0]; $all_time = round(($time_end - $time_start), $quantity_sings); return $all_time; } $img_path = 'http://obovsem.org.ua/img/all/articles/25/gorod.jpg'; // Если фотография не загружается, скопируйте ее на свой сервер и смените путь $img_path $tmp = getimagesize($img_path); $new_width = 320; $new_height = 240; $counter = 10; $round = 3; $original_width = $tmp[0]; $original_height = $tmp[1]; $img_src = imagecreatefromjpeg($img_path); $new_img = imagecreatetruecolor($new_width, $new_height); for ($i = 1; $i <= $counter; $i++) { $time_start = microtime(); imagecopyresampled($new_img, $img_src, 0, 0, 0, 0, $new_width, $new_height, $original_width, $original_height); $all_time += script_time_count($time_start, $round); } $average_time_resampled = round($all_time / $counter, $round); $all_time = 0; for ($i = 1; $i <= $counter; $i++) { $time_start = microtime(); imagecopyresized($new_img, $img_src, 0, 0, 0, 0, $new_width, $new_height, $original_width, $original_height); $all_time += script_time_count($time_start, $round); } $average_time_resized = round($all_time / $counter, $round); echo 'Среднее время работы imagecopyresampled(): <strong>'.$average_time_resampled.'</strong> сек.<br> Среднее время работы imagecopyresized(): <strong>'.$average_time_resized.'</strong> сек.<br> Среднее время вычесленно из '.$counter.' попыток для каждой функции.'; imagedestroy($img_src); imagedestroy($new_img); // http://obovsem.org.ua
Опубликовано: 2011/05/20
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/php.php?txt=25" target="_blank">Imagecopyresampled против imagecopyresized в PHP библиотеки GD</a> 14582
Добавить комментарий
|