15 декабря 2007
Каждый php-программист когда-нибудь приходит к созданию фотогалереи или какого-то инструмента по работе с трансформацией графики, а для уменьшения загружаемого изображения, фотографии требуется знание основных функций библиотеки «php_gd2». И мы решили некоторые из этих функций продемонстрировать в данном посте. Ниже приведен пример с функцией уменьшения изображения, которая сжимает, уменьшает изображения четырех форматов: jpg, gif, png, bmp.
Функция уменьшения изображения:
[code]
<?php
/**
* $filename string = 'img.jpg' - путь к изображению
* $percent string = 300 - ширина уменьшенной копии картинки
* $quality string = 0-100 - качество изображения (только для JPG)
**/
function resize ($filename, $size = 300, $quality = 85)
{
/**
* Адрес директории для сохранения картинки
*/
$dir = '/images/';
/**
* Извлекаем формат изображения, то есть получаем
* символы находящиеся после последней точки
*/
$ext = strtolower(strrchr(basename($filename), "."));
/**
* Допустимые форматы
*/
$extentions = array('.jpg', '.gif', '.png', '.bmp');
if (in_array($ext, $extentions)) {
$percent = $size; // Ширина изображения миниатюры
list($width, $height) = getimagesize($filename); // Возвращает ширину и высоту
$newheight = $height * $percent;
$newwidth = $newheight / $width;
$thumb = imagecreatetruecolor($percent, $newwidth);
switch ($ext) {
case '.jpg':
$source = @imagecreatefromjpeg($filename);
break;
case '.gif':
$source = @imagecreatefromgif($filename);
break;
case '.png':
$source = @imagecreatefrompng($filename);
break;
case '.bmp':
$source = @imagecreatefromwbmp($filename);
}
/**
* Функция наложения, копирования изображения
*/
imagecopyresized($thumb, $source, 0, 0, 0, 0, $percent, $newwidth, $width, $height);
/**
* Создаем изображение
*/
switch ($ext) {
case '.jpg':
imagejpeg($thumb, $dir . $filename, $quality);
break;
case '.gif':
imagegif($thumb, $dir . $filename);
break;
case '.png':
imagepng($thumb, $dir . $filename, $quality);
break;
case '.bmp':
imagewbmp($thumb, $dir . $filename);
break;
}
} else {
return false;
}
/*
* Очищаем оперативную память сервера от временных файлов,
* которые потребовались для создания миниатюры
**/
@imagedestroy($thumb);
@imagedestroy($source);
return $filename;
}
?>
[/code]
-
Звоните!
+7 (812) 318-40-34 +7 (499) 288-16-43
+7 (499) 288-15-30 -
Пишите!
info@webering.ru -
Приезжайте!
-
г. Санкт-Петербург, ул. Седова, д. 11, лит. А, оф. 642 БЦ «Эврика» г. Москва, ул. Бутлерова, д. 17, оф. 5115 БЦ «NEO GEO»
-
Наш офис расположен в 5 минутах от станции метро «Елизаровская» в бизнес-центре «Эврика».