|
|||||||||
|
Imagecreate VS ImagecreatetruecolorДля тех кто читал официальную документацию PHP Изображение формата GIF может содержать максимум 256 цветов, что вполне по силам Imagecreate(). А вот если сравнить кол-во памяти, требуемое каждой из функций на создание одного и того-же изображения, то весы явно склоняются не в пользу imagecreatetruecolor(): $memory = memory_get_usage(); $width = 500; $height = 500; $img = imagecreate($width, $height); echo 'Память, используемя для imagecreate(): ' . (memory_get_usage() - $memory) . ' байт.<br>'; imagedestroy($img); $img = imagecreatetruecolor($width, $height); echo 'Память, используемя для imagecreatetruecolor(): ' . (memory_get_usage() - $memory) . ' байт.<br>'; imagedestroy($img); Результат теста, код которого приведен выше, впечатляет: imagecreate потребляет 536 064 байт оперативной памяти, imagecreatetruecolor - в два раза больше: 1 284 192 байт! Использование imagecreate() может весьма существенно снизить потребление памяти сервера у проэкта, активно использующего работу с изображениями. Применение imagecreate() из библиотеки PHP GD не сводится только к экономии памяти. С помощью этой функции получается создать изображение формата gif с прозрачными участками без артефактов (три прямоугольных прозрачных участка, идущих по линии снизу слева до верхнего правго угла примера ниже). Пример изображений, с залитым желтым фоном средствами HTML, чтобы лучше была видна разница в фотографиях (черные линии по краям прозрачных областей, качество самой фотографии):
Фотографии специально увеличены (width и height в теге <img>) до размера 550 на 344 (оригинал 300 на 188). При внимательном изучении можно найти множество отличий в качестве фотографий, размер которых был изменен с помощью этого кода, написанного на PHP с использованием функций GD:
$img_path = 'http://obovsem.org.ua/img/all/articles/24/prev_les.gif';
// Если фотография не загружается, скопируйте ее на свой сервер и смените путь $img_path $tmp = getimagesize($img_path); $new_width = 299; $new_height = 187; $original_width = $tmp[0]; $original_height = $tmp[1]; $img_src = imagecreatefromgif($img_path); $new_img = imagecreate($new_width, $new_height); //$new_img = imagecreatetruecolor($new_width, $new_height); $color = imagecolorallocate($new_img, 0, 0, 0); imagecolortransparent($new_img, $color); imagecopyresampled($new_img, $img_src, 0, 0, 0, 0, $new_width, $new_height, $original_width, $original_height); header("Content-type: image/gif"); imagegif($new_img); imagedestroy($img_src); imagedestroy($new_img); Вывод: при изменении размеров изображений формата gif, в особенности с прозрачными участками, и других работах над картинками этого формата, следует использовать функцию PHP библиотеки GD imagecreate.
Опубликовано: 2011/05/29
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/php.php?txt=24" target="_blank">Imagecreate против imagecreatetruecolor или imagecreate VS imagecreatetruecolor в GD PHP</a> 8916
Добавить комментарий
|