августа 15, 2010 | by Макс | Вот пара функций, которые время от времени мне пригождаются, но я их не могу никогда найти, приходится заново писать. В Интернете достаточно сложно найти простую 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/ Теги: php
Понравилась статья? Получай обновления и будь всегда в курсе событий!