Spec-Zone.ru › Phalcon 3

Изображения

Phalcon\Image — это компонент, позволяющий манипулировать файлами изображений. Несколько операций могут быть выполнены над одним объектом изображения.

Данное руководство не предназначено для полного описания доступных методов и их аргументов. Пожалуйста, посетите API для получения полной справки.

Адаптеры

Этот компонент использует адаптеры для инкапсуляции конкретных программ обработки изображений. Поддерживаются следующие программы обработки изображений:

Класс Описание
Phalcon\Image\Adapter\Gd Требует расширения GD PHP.
Phalcon\Image\Adapter\Imagick Требует расширения ImageMagick PHP.

Реализация собственных адаптеров

Для создания собственных адаптеров изображений или расширения существующих необходимо реализовать интерфейс Phalcon\Image\AdapterInterface.

Сохранение и отображение изображений

Прежде чем начать работу с различными функциями компонента изображений, необходимо понять, как сохранять и отображать эти изображения.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// ...

// Overwrite the original image
$image->save();
$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// ...

// Save to 'new-image.jpg'
$image->save("new-image.jpg");

Вы также можете изменить формат изображения:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// ...

// Save as a PNG file
$image->save("image.png");

При сохранении в формате JPEG вы также можете указать качество как второй параметр:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// ...

// Save as a JPEG with 80% quality
$image->save("image.jpg", 80);

Изменение размера изображений

Существует несколько режимов изменения размера:

  • \Phalcon\Image::WIDTH
  • \Phalcon\Image::HEIGHT
  • \Phalcon\Image::NONE
  • \Phalcon\Image::TENSILE
  • \Phalcon\Image::AUTO
  • \Phalcon\Image::INVERSE
  • \Phalcon\Image::PRECISE

\Phalcon\Image::WIDTH

Высота будет автоматически рассчитана для сохранения пропорций; если вы укажете высоту, она будет проигнорирована.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->resize(
    300,
    null,
    \Phalcon\Image::WIDTH
);

$image->save("resized-image.jpg");

\Phalcon\Image::HEIGHT

Ширина будет автоматически рассчитана для сохранения пропорций; если вы укажете ширину, она будет проигнорирована.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->resize(
    null,
    300,
    \Phalcon\Image::HEIGHT
);

$image->save("resized-image.jpg");

\Phalcon\Image::NONE

Константа NONE игнорирует исходное соотношение сторон изображения. Не требуются ни ширина, ни высота. Если размер не указан, будет использован исходный размер. Если новые пропорции отличаются от исходных, изображение может быть искажено и растянуто.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->resize(
    400,
    200,
    \Phalcon\Image::NONE
);

$image->save("resized-image.jpg");

\Phalcon\Image::TENSILE

Аналогично константе NONE, константа TENSILE игнорирует исходное соотношение сторон изображения. Требуются как ширина, так и высота. Если новые пропорции отличаются от исходных, изображение может быть искажено и растянуто.

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->resize(
    400,
    200,
    \Phalcon\Image::NONE
);

$image->save("resized-image.jpg");

Обрезка изображений

Например, чтобы получить квадрат 100x100 пикселей из центра изображения:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$width   = 100;
$height  = 100;
$offsetX = (($image->getWidth() - $width) / 2);
$offsetY = (($image->getHeight() - $height) / 2);

$image->crop($width, $height, $offsetX, $offsetY);

$image->save("cropped-image.jpg");

Поворот изображений

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// Rotate an image by 90 degrees clockwise
$image->rotate(90);

$image->save("rotated-image.jpg");

Переворачивание изображений

Вы можете перевернуть изображение по горизонтали (используя константу \Phalcon\Image::HORIZONTAL) и по вертикали (используя константу %%%CODE_BLOCK_25%%):

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

// Flip an image horizontally
$image->flip(
    \Phalcon\Image::HORIZONTAL
);

$image->save("flipped-image.jpg");

Заострение изображений

Метод sharpen() принимает один параметр — целое число от 0 (без эффекта) до 100 (очень резко):

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->sharpen(50);

$image->save("sharpened-image.jpg");

Добавление водяных знаков к изображениям

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$watermark = new \Phalcon\Image\Adapter\Gd("me.jpg");

// Put the watermark in the top left corner
$offsetX = 10;
$offsetY = 10;

$opacity = 70;

$image->watermark(
    $watermark,
    $offsetX,
    $offsetY,
    $opacity
);

$image->save("watermarked-image.jpg");

Конечно, вы также можете изменить помеченное изображение перед его применением к основному изображению:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$watermark = new \Phalcon\Image\Adapter\Gd("me.jpg");

$watermark->resize(100, 100);
$watermark->rotate(90);
$watermark->sharpen(5);

// Put the watermark in the bottom right corner with a 10px margin
$offsetX = ($image->getWidth() - $watermark->getWidth() - 10);
$offsetY = ($image->getHeight() - $watermark->getHeight() - 10);

$opacity = 70;

$image->watermark(
    $watermark,
    $offsetX,
    $offsetY,
    $opacity
);

$image->save("watermarked-image.jpg");

Размытие изображений

Метод blur() принимает один параметр — целое число от 0 (без эффекта) до 100 (очень размыто):

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->blur(50);

$image->save("blurred-image.jpg");

Пикселизация изображений

Метод pixelate() принимает один параметр — чем больше целое число, тем более пикселизированным становится изображение:

$image = new \Phalcon\Image\Adapter\Gd("image.jpg");

$image->pixelate(10);

$image->save("pixelated-image.jpg");

© 2011–2017 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/latest/reference/images.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API