Вот пара функций, которые время от времени мне пригождаются, но я их не могу никогда найти, приходится заново писать. В Интернете достаточно сложно найти простую PHP функцию для какой-то простой задачи, пошла какая-то болезнь на классы, даже под самые мелочные задачи пишутся огромные классы с 20 методами, в которых черт ногу сломит, многобукав что называется.

Сохраню свои мини-поделки на PHP+GD здесь.

Функция для изменения размеров изображения.

Часто пригождается мне, когда необходимо создавать превьюшки (тубы) из больших картинок.

Передается 4 параметра: $file — путь до исходного изображения, $out — путь, куда сохранить изображение с новым размером, $w — ширина на выходе, $q — качество.

function resize_image($file, $out, $w = 200, $q = 90) {
if(empty($file) | empty($out)) return false;
$src = imagecreatefromjpeg($file);
$w_src = imagesx($src);
$h_src = imagesy($src);
$ratio = $w_src/$w;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);
$dest = imagecreatetruecolor($w_dest, $h_dest);
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
imagejpeg($dest, $out, $q);
imagedestroy($dest);
imagedestroy($src);
return true;
}
resize_image('1.jpg', '2.jpg', 200, 50); //Изменяет размер картинки 1.jpg, лежащей в одной папке со скриптом, уменьшенное изображение сохраняет как 2.jpg

Функция для наложения водяного знака

Часто необходимо наложить на картинку копирайт, с этим справляется функция ниже.

Передается 2 параметра: $file — путь до исходного изображения, $watermark — путь до картинки-водяного знака. После того, как функция отработает, поверх исходного файла в нижнем правом углу появляется водяной знак.

function watermark($file, $watermark) {
if(empty($file) | empty($watermark)) return false;
$wh = getimagesize($watermark);
$fh = getimagesize($file);
$rwatermark = imagecreatefromjpeg($watermark); //Иногда может понадобиться наложить прозрачный png, тогда заменяем функцию на imagecreatefrompng
$rfile = imagecreatefromjpeg($file);
imagecopy($rfile, $rwatermark, $fh[0] - $wh[0], $fh[1] - $wh[1], 0, 0, $wh[0], $wh[1]);
imagejpeg($rfile, $file, '100');
imagedestroy($rwatermark);
imagedestroy($rfile);
return true;
}
watermark('1.jpg', '2.jpg'); //Теперь 1.jpg в нижнем правом углу обляпался 2.jpg

h++p://php.name/php/php-images-function/

Оставьте свой комментарий