Наложение изображений на 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
Отличный пример! Спасибо!