Наложение изображений на 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 — путь к изображению которое нужно вставить в рамку

Исходные данные и результат работы скрипта:

Исходные данные Результат


ramka

rezult

Использованы материалы собственных мозгов, а так же разных сайтов, к сожалению не помню каких.
Спасибо за внимание!


Один комментарий для “Наложение изображений на PHP”

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