Оглавление

28.8. Изменение размеров и копирование изображений

Для изменения  размеров и копирования изображений применяется функция imagecopyresampled(). Функция имеет следующий формат:
imagecopyresampled(<Идентификатор1>, <Идентификатор2>, <X1>, <Y1>,  <X2>, <Y2>, <Ширина1>, <Высота1>, <Ширина2>,  <Высота2>)

 
Параметр <Идентификатор1> задает изображение, в которое требуется скопировать изображение,  заданное параметром <Идентификатор2>. Изображение, в которое копируем, должно быть полноцветным или созданным с помощью функции  imagecreatetruecolor(). Функция  imagecreatetruecolor()  часто применяется для создания подложки при изменении размеров изображения.

 

Параметры  <X2>,  <Y2>,  <Ширина2>  и  <Высота2>  задают  прямоугольную  область  в изображении,  заданном в параметре <Идентификатор2>, которую мы будем  копировать. А  параметры  <X1>,  <Y1>,  <Ширина1>  и  <Высота1>  задают прямоугольную область, в которую будет вставлен копируемый фрагмент.

 
В качестве примера уменьшим изображение в два раза и выведем полученное изображение в Web-браузер (листинг 68).

 
Листинг 68. Изменение размера изображения

<?php
$img2 = imagecreatefromgif('foto.gif');
if (!$img2) die('Изображение не удалось загрузить');
// Получаем размеры изображения
list($width2, $height2) = getimagesize('foto.gif');
// Получаем ширину и высоту нового изображения
$width1 = $width2/2;
$height1 = $height2/2;
// Создаем подложку для нового изображения
$img1 = imagecreatetruecolor($width1, $height1);
if (!$img1) die('Изображение не удалось создать');
header('Content-type: image/jpeg');
// Копируем и изменяем размер
imagecopyresampled($img1, $img2, 0, 0, 0, 0, $width1, $height1, 
                   $width2, $height2);
imagejpeg($img1);
imagedestroy($img1);
imagedestroy($img2);
?>

 

В листинге 67 мы рассмотрели проблему вывода текста на готовое изображение и не получили  точный цвет  текста. Теперь рассмотрим  вывод  текста указанным цветом. Для этого получаем исходное изображение. Создаем подложку  такого же  размера  и  копируем  исходное  изображение  на  созданную подложку. Далее выводим надпись нужным цветом (листинг 69).

 
Листинг 69. Вывод текста на готовое изображение указанным цветом

<?php
$foto_name = 'foto.gif';
// Загружаем исходное изображение
$img2 = imagecreatefromgif($foto_name);
if (!$img2) die('Изображение не удалось загрузить');
// Получаем размеры изображения
list($width, $height) = getimagesize($foto_name);
// Создаем подложку для нового изображения
$img1 = imagecreatetruecolor($width, $height);
if (!$img1) die('Изображение не удалось создать');
// Копируем исходное изображение на подложку
imagecopyresampled($img1, $img2, 0, 0, 0, 0, $width, $height, 
                   $width, $height);
imagedestroy($img2);
$white = imagecolorallocate($img1, 255, 255, 255);
if ($white === false) die('Ошибка');
$str = 'Море';
$str = iconv("windows-1251", "UTF-8", $str);
$fontfile = 'C:/WINDOWS/Fonts/arial.ttf';
// Выводим надпись на изображение
imagettftext($img1, 28, 0, 100, 440, $white, $fontfile, $str);
// Выводим изображение
header('Content-type: image/gif');
imagegif($img1);
imagedestroy($img1);
?>

 

Результат выполнения скрипта изображен на рис. 3.

 

Море

Рис. 3. Вывод текста  на готовое изображение определенным цветом

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити