базовый курс

ГРУППА КУРСА

Использование готовых изображений

В PHP можно не только создать изображение с нуля, но и загрузить существующее. Это делается с помощью функций, каждая из которых загружает изображение своего формата. Функция imageCreateFromJpeg() использует файл в формате jpeg. Возвращает дескриптор изображения. Загрузим файл picture.jpg из папки phpimages. Вы можете использовать эту картинку:

Картинка

Напишем скрипт, который загружает изображение из файла и выводит в браузер:

1
2
3
4
5
6
<?php
header('Content-type: image/png');
$image = imageCreateFromJpeg('phpimages/picture.jpg');
imagepng($image);
imagedestroy($image);
?>

Это обычное изображение, с ним можно работать, добавлять на него различные фигуры. Обратите внимание, использованный файл имеет один формат, а вывод картинки сделан в другом формате. Это вполне допустимо.

Для использования файлов других форматов есть функции imageCreateFromPng(), imageCreateFromWbmp(), imageCreateFromGif(), imageCreateFromGg2() и другие. Набор поддерживаемых форматов зависит от сборки PHP. Во всех функциях вместо адреса файла можно указать URL. Для этого в файле php.ini должна быть включена опция allow_url_fopen, позволяющая загружать файлы из интернета.

Иногда нужна не вся картина, а только её часть. Тогда нужно сделать так: загрузить картинку, затем создать новое изображение, скопировать нужную часть картинки в новое изображение и дальше работать с ним. Для копирования используется функция imageCopy(). Она возвращает true в случае успеха.

imageCopy (принимающее изображение, оригинал, x принимающего, y принимающего, x оригинала, y оригинала, ширина, высота)

Параметры:

принимающее изображение - дескриптор изображения, в которое вставляется копия

оригинал - дескриптор изображения, которое копируется

x принимающего - координата x в принимающем изображении

y принимающего - координата y в принимающем изображении

x оригинала - координата x в оригинале

y оригинала - координата y в оригинале

ширина - ширина копируемой части

высота - высота копируемой части

В параметрах указываются координаты левого верхнего угла копируемой части. Выведем на экран часть картинки из файла:

2
3
4
5
6
7
8
9
10
header('Content-type: image/png');
$fromfile = imageCreateFromJpeg('phpimages/picture.jpg'); //оригинал
$newimage = imageCreateTrueColor(500, 400); //принимающее
$greyblue = imageColorAllocate($newimage, 0xDB, 0xE3, 0xEA);
imageFilledRectangle($newimage, 0, 0, 499, 399, $greyblue); //фон
imageCopy($newimage, $fromfile, 10, 10, 5, 50, 340, 230);
imagepng($newimage);
imagedestroy($fromfile);
imagedestroy($newimage);

Результат:

Копирование

Функция imageCopyResized() копирует часть картинки и изменяет её размеры.

imageCopyResize (принимающее изображение, оригинал, x принимающего, y принимающего, x ориринала, y оригинала, новая ширина, новая высота, оригинальная ширина, оригинальная высота)

Функция imageCopyResampled() также копирует с изменением размеров. Она отличается тем, что производит копирование с ресемплированием. Оно лучше сохраняет качество изображения при уменьшении. Изменим размеры картинки, которая скопирована в предыдущем примере. Для этого заменим функцию imageCopy() на imageCopyResized(). Не будем стремиться сохранить пропорции.

7
imageCopyResized($newimage, $fromfile, 10, 10, 5, 50, 480, 235, 240, 230);

Новые размеры копируемой части 480 на 235. Картинка выглядит так:

Размеры картинки

Попробуйте использовать обе функции. Сделайте разные варианты изменения размеров.