Наложение изображений на PHP
Работа с изображениями в PHP, рассмотрим реализацию «смешивания» изображения из нескольких картинок, и способы практического применения такого трюка.
На оригинальность не расчитывайте 🙂 Писалось для личных нужд
Постановка задачи
Итак, постановка задачи: предположим, на вашем сайте имеется галерея, однако дизайн вашего сайта требует, чтобы картинки имели скругленные края, а также вы хотите, чтобы на каждой картинке стоял логотип вашего сайта.
P.S.: скруглить края у картинки более быстрым методом и менее трудоемким способом можно прочитав соответствующую статью.
Решение
Рассмотрим небольшую функцию на PHP:
<?php function create_preview($img_name,$path_parts) { if (isset($img_name)) { $chache_fn = $_SERVER["DOCUMENT_ROOT"]."/chache/" . $img_name; $img_name = $_SERVER["DOCUMENT_ROOT"].$path_parts."/".$img_name; if (!file_exists($chache_fn) && file_exists($img_name)) { $info = @getimagesize($img_name); $ext = @$info[2]; $header = @$info['mime']; $board = ImageCreateFrompng("img/ramka.png"); $im = ImageCreateTrueColor(216,333); switch($ext) { case 1: { // GIF $img = @imagecreatefromgif($img_name); if ($img) { imagecopy($im, $img, 8, 8, 0, 0, 216, 333); imagecopy($im, $board, 0, 0, 0, 0, 216, 333); imagegif($im, $chache_fn, 80); return $chache_fn; } break; } case 2: { // JPG $img = @imagecreatefromjpeg($img_name); if ($img) { imagecopy($im, $img, 8, 8, 0, 0, 216, 333); imagecopy($im, $board, 0, 0, 0, 0, 216, 333); imagejpeg($im, $chache_fn, 80); return $chache_fn; } break; } case 3: { // PNG $img = @imagecreatefrompng($img_name); if ($img) { imagecopy($im, $img, 8, 8, 0, 0, 216, 333); imagecopy($im, $board, 0, 0, 0, 0, 216, 333); imagepng($im, $chache_fn, 80); return $chache_fn; } break; } case 6: { // BMP $img = @imagecreatefromwbmp($img_name); if ($img) { imagecopy($im, $img, 8, 8, 0, 0, 216, 333); imagecopy($im, $board, 0, 0, 0, 0, 216, 333); imagewbmp($im, $chache_fn, 80); return $chache_fn; } break; } default: { $f = @file($img_name); if ($f) { echo implode("", $f); } break; } } return $chache_fn; } elseif(file_exists($chache_fn)) { return $chache_fn; } else die("Файл не найден!"); } } ?>
Типичный вызов может выглядеть так:
$chache_fn = "/chache/"; $string = "/img/img.jpg"; $path_parts = pathinfo($string); create_preview (basename($string),$path_parts['dirname']); echo '<img src="'.$chache_fn.basename($string).'" >';
$chache_fn — путь где лежат сгенерированые изображения
$string — путь к изображению которое нужно вставить в рамку
Исходные данные и результат работы скрипта:
Исходные данные | Результат |
|
Использованы материалы собственных мозгов, а так же разных сайтов, к сожалению не помню каких.
Спасибо за внимание!
9 февраля, 2012 в 02:06|date at time
Отличный пример! Спасибо!