Skip to content

Phalcon image

NOTE

All classes are prefixed with Phalcon

Image\Adapter\AbstractAdapter

Abstract Source on GitHub

All image adapters must use this class

@template TImage of object

Uses Phalcon\Contracts\Image\ImageTypes · Phalcon\Image\Enum · Phalcon\Image\Exception · Phalcon\Image\Exceptions\InvalidColor · Phalcon\Image\Exceptions\MissingDimensions · Phalcon\Image\Exceptions\MissingHeight · Phalcon\Image\Exceptions\MissingWidth

Method Summary

public AdapterInterface background(string $color,int $opacity = 100) Set the background color of an image public AdapterInterface blur( int $radius ) Blur image public AdapterInterface crop(int $width,int $height,mixed $offsetX = null,mixed $offsetY = null) Crop an image to the given size public AdapterInterface flip( int $direction ) Flip the image along the horizontal or vertical axis public int getHeight() public getImage() public string getMime() public string getRealpath() public int getType() public int getWidth() public AdapterInterface mask( AdapterInterface $mask ) Composite one image onto another public AdapterInterface pixelate( int $amount ) Pixelate image public AdapterInterface reflection(int $height,int $opacity = 100,bool $fadeIn = false) Add a reflection to an image public string render(string|null $extension = null,int $quality = 100) Render the image and return the binary string public AdapterInterface resize(int|null $width = null,int|null $height = null,int $master = Enum::AUTO) Resize the image to the given size public AdapterInterface rotate( int $degrees ) Rotate the image by a given amount public AdapterInterface save(string|null $file = null,int $quality = -1) Save the image public AdapterInterface sharpen( int $amount ) Sharpen the image by a given amount public AdapterInterface text(string $text,mixed $offsetX = false,mixed $offsetY = false,int $opacity = 100,string $color = "000000",int $size = 12,string|null $fontFile = null) Add a text to an image with a specified opacity public AdapterInterface watermark(AdapterInterface $watermark,int $offsetX = 0,int $offsetY = 0,int $opacity = 100) Add a watermark to an image with the specified opacity protected int checkHighLow(int $value,int $min = 0,int $max = 100) protected void processBackground(int $red,int $green,int $blue,int $opacity) Renders the supplied colour onto the image as the background. Channels protected void processBlur( int $radius ) Applies a blur. The radius is already clamped to 1-100. protected void processCrop(int $width,int $height,int $offsetX,int $offsetY) Crops the image. Width, height and both offsets are already normalized protected void processFlip( int $direction ) Flips the image. The direction is already normalized to protected processMask( AdapterInterface $mask ) Composites the supplied image as a mask onto this one. The mask is read protected void processPixelate( int $amount ) Pixelates the image. The amount is already at least 2. protected void processReflection(int $height,int $opacity,bool $fadeIn) Adds a reflection. The height is clamped to the image height and the protected processRender(string $extension,int $quality) Renders the image to a binary string. The extension is non-empty and the protected void processResize(int $width,int $height) Resizes the image. Width and height are already resolved to positive protected void processRotate( int $degrees ) Rotates the image. The degrees value is already normalized to -180..180. protected bool processSave(string $file,int $quality) Saves the image to the supplied file path. protected void processSharpen( int $amount ) Sharpens the image. The amount is already clamped to 1-100. protected void processText(string $text,mixed $offsetX,mixed $offsetY,int $opacity,int $red,int $green,int $blue,int $size,string|null $fontFile = null) Renders text onto the image. The opacity is clamped to 0-100 and the protected void processWatermark(AdapterInterface $watermark,int $offsetX,int $offsetY,int $opacity) Composites the supplied watermark onto this image. Offsets and opacity

Properties

protected string $file
protected int $height
protected TImage|null $image = null The handle of the underlying backend. Every adapter assigns it in its constructor and releases it in its destructor.
protected string $mime
protected string $realpath
protected int $type Image type Driver dependent
protected int $width Image width

Methods

Public · 20

background()

public function background(
    string $color,
    int $opacity = 100
): AdapterInterface;

Set the background color of an image

blur()

public function blur( int $radius ): AdapterInterface;

Blur image

crop()

public function crop(
    int $width,
    int $height,
    mixed $offsetX = null,
    mixed $offsetY = null
): AdapterInterface;

Crop an image to the given size

flip()

public function flip( int $direction ): AdapterInterface;

Flip the image along the horizontal or vertical axis

getHeight()

public function getHeight(): int;

getImage()

public function getImage();

getMime()

public function getMime(): string;

getRealpath()

public function getRealpath(): string;

getType()

public function getType(): int;

getWidth()

public function getWidth(): int;

mask()

public function mask( AdapterInterface $mask ): AdapterInterface;

Composite one image onto another

The mask is read through its public render() output rather than its internal handle, so a mask created with a different backend composites correctly. The cost is one encode/decode round trip per call, which is worth knowing inside loops.

pixelate()

public function pixelate( int $amount ): AdapterInterface;

Pixelate image

reflection()

public function reflection(
    int $height,
    int $opacity = 100,
    bool $fadeIn = false
): AdapterInterface;

Add a reflection to an image

render()

public function render(
    string|null $extension = null,
    int $quality = 100
): string;

Render the image and return the binary string

resize()

public function resize(
    int|null $width = null,
    int|null $height = null,
    int $master = Enum::AUTO
): AdapterInterface;

Resize the image to the given size

rotate()

public function rotate( int $degrees ): AdapterInterface;

Rotate the image by a given amount

save()

public function save(
    string|null $file = null,
    int $quality = -1
): AdapterInterface;

Save the image

sharpen()

public function sharpen( int $amount ): AdapterInterface;

Sharpen the image by a given amount

text()

public function text(
    string $text,
    mixed $offsetX = false,
    mixed $offsetY = false,
    int $opacity = 100,
    string $color = "000000",
    int $size = 12,
    string|null $fontFile = null
): AdapterInterface;

Add a text to an image with a specified opacity

The offsets accept false to centre the text on that axis, so they are wider than the int the interface documents.

watermark()

public function watermark(
    AdapterInterface $watermark,
    int $offsetX = 0,
    int $offsetY = 0,
    int $opacity = 100
): AdapterInterface;

Add a watermark to an image with the specified opacity

The watermark is read through its public render() output rather than its internal handle, so a watermark created with a different backend composites correctly. The cost is one encode/decode round trip per call, which is worth knowing inside loops.

Protected · 15

checkHighLow()

protected function checkHighLow(
    int $value,
    int $min = 0,
    int $max = 100
): int;

processBackground()

abstract protected function processBackground(
    int $red,
    int $green,
    int $blue,
    int $opacity
): void;

Renders the supplied colour onto the image as the background. Channels are 0-255; the opacity is the validated 0-100 value.

processBlur()

abstract protected function processBlur( int $radius ): void;

Applies a blur. The radius is already clamped to 1-100.

processCrop()

abstract protected function processCrop(
    int $width,
    int $height,
    int $offsetX,
    int $offsetY
): void;

Crops the image. Width, height and both offsets are already normalized to fit within the current canvas.

processFlip()

abstract protected function processFlip( int $direction ): void;

Flips the image. The direction is already normalized to Enum::HORIZONTAL or Enum::VERTICAL.

processMask()

abstract protected function processMask( AdapterInterface $mask );

Composites the supplied image as a mask onto this one. The mask is read through its public render() output, so it may be any adapter backend.

processPixelate()

abstract protected function processPixelate( int $amount ): void;

Pixelates the image. The amount is already at least 2.

processReflection()

abstract protected function processReflection(
    int $height,
    int $opacity,
    bool $fadeIn
): void;

Adds a reflection. The height is clamped to the image height and the opacity to 0-100.

processRender()

abstract protected function processRender(
    string $extension,
    int $quality
);

Renders the image to a binary string. The extension is non-empty and the quality is already clamped to 1-100. Returns the encoded bytes.

processResize()

abstract protected function processResize(
    int $width,
    int $height
): void;

Resizes the image. Width and height are already resolved to positive integers per the requested resize mode.

processRotate()

abstract protected function processRotate( int $degrees ): void;

Rotates the image. The degrees value is already normalized to -180..180.

processSave()

abstract protected function processSave(
    string $file,
    int $quality
): bool;

Saves the image to the supplied file path.

processSharpen()

abstract protected function processSharpen( int $amount ): void;

Sharpens the image. The amount is already clamped to 1-100.

processText()

abstract protected function processText(
    string $text,
    mixed $offsetX,
    mixed $offsetY,
    int $opacity,
    int $red,
    int $green,
    int $blue,
    int $size,
    string|null $fontFile = null
): void;

Renders text onto the image. The opacity is clamped to 0-100 and the colour is supplied as separate 0-255 channels.

processWatermark()

abstract protected function processWatermark(
    AdapterInterface $watermark,
    int $offsetX,
    int $offsetY,
    int $opacity
): void;

Composites the supplied watermark onto this image. Offsets and opacity are already clamped to the valid range; the watermark is read through its public render() output, so it may be any adapter backend.

Image\Adapter\AdapterInterface

Interface Source on GitHub

Interface for Phalcon\Image\Adapter classes

  • Phalcon\Image\Adapter\AdapterInterface

Uses Phalcon\Image\Enum

Method Summary

Methods

Public · 16

background()

public function background(
    string $color,
    int $opacity = 100
): AdapterInterface;

Add a background to an image

blur()

public function blur( int $radius ): AdapterInterface;

Blur an image

crop()

public function crop(
    int $width,
    int $height,
    int|null $offsetX = null,
    int|null $offsetY = null
): AdapterInterface;

Crop an image

flip()

public function flip( int $direction ): AdapterInterface;

Flip an image

getHeight()

public function getHeight(): int;

getWidth()

public function getWidth(): int;

mask()

public function mask( AdapterInterface $mask ): AdapterInterface;

Add a mask to an image

pixelate()

public function pixelate( int $amount ): AdapterInterface;

Pixelate an image

reflection()

public function reflection(
    int $height,
    int $opacity = 100,
    bool $fadeIn = false
): AdapterInterface;

Reflect an image

render()

public function render(
    string|null $extension = null,
    int $quality = 100
): string;

Render an image

resize()

public function resize(
    int|null $width = null,
    int|null $height = null,
    int $master = Enum::AUTO
): AdapterInterface;

Resize an image

rotate()

public function rotate( int $degrees ): AdapterInterface;

Rotate an image

save()

public function save(
    string|null $file = null,
    int $quality = 100
): AdapterInterface;

Save an image

sharpen()

public function sharpen( int $amount ): AdapterInterface;

Sharpen an image

text()

public function text(
    string $text,
    int $offsetX = 0,
    int $offsetY = 0,
    int $opacity = 100,
    string $color = "000000",
    int $size = 12,
    string|null $fontFile = null
): AdapterInterface;

Adds text on an image

watermark()

public function watermark(
    AdapterInterface $watermark,
    int $offsetX = 0,
    int $offsetY = 0,
    int $opacity = 100
): AdapterInterface;

Add a watermark on an image

Image\Adapter\Gd

Class Source on GitHub

Image manipulation backed by the GD extension.

Capabilities:

Aspect Support
Load formats GIF, JPEG, JPEG 2000, PNG, WEBP, WBMP, XBM
Render/save formats GIF, JPEG, PNG, WBMP, WEBP, XBM
Backend-only API none

Unsupported render/save formats raise Phalcon\Image\Exceptions\UnsupportedImageType. Visual semantics differ from the Imagick adapter: blur() applies repeated 3x3 Gaussian convolutions (the radius is the number of passes), while sharpen and reflection use GD's own scales. Switching the factory backend can change the rendered output.

@extends AbstractAdapter

Uses GdImage · Phalcon\Contracts\Image\ImageTypes · Phalcon\Image\Enum · Phalcon\Image\Exception · Phalcon\Image\Exceptions\ExtensionNotLoaded · Phalcon\Image\Exceptions\ImageLoadFailed · Phalcon\Image\Exceptions\TextRenderingFailed · Phalcon\Image\Exceptions\UnsupportedImageType · Phalcon\Image\Exceptions\VersionMismatch · Phalcon\Traits\Php\FileTrait · Phalcon\Traits\Php\InfoTrait

Method Summary

Methods

Public · 4

__construct()

public function __construct(
    string $file,
    int|null $width = null,
    int|null $height = null
);

Loads an image from a file, or creates a blank canvas.

When the file exists it is loaded. When the file does not exist and both a width and a height are supplied, a blank true-color canvas is created instead - its realpath, mime and type then describe a PNG canvas rather than the named file. Prefer Gd::create() for the canvas case; this dual mode is slated for removal in the next major version.

__destruct()

public function __destruct();

Destructor

create()

public static function create(
    int $width,
    int $height
): AbstractAdapter;

Creates a blank true-color canvas of the given dimensions, without the load-or-create ambiguity of the constructor.

getVersion()

public function getVersion(): string;
Protected · 15

processBackground()

protected function processBackground(
    int $red,
    int $green,
    int $blue,
    int $opacity
): void;

processBlur()

protected function processBlur( int $radius ): void;

processCreate()

protected function processCreate(
    int $width,
    int $height
);

processCrop()

protected function processCrop(
    int $width,
    int $height,
    int $offsetX,
    int $offsetY
): void;

processFlip()

protected function processFlip( int $direction ): void;

processMask()

protected function processMask( AdapterInterface $mask );

processPixelate()

protected function processPixelate( int $amount ): void;

processReflection()

protected function processReflection(
    int $height,
    int $opacity,
    bool $fadeIn
): void;

processRender()

protected function processRender(
    string $extension,
    int $quality
): false|string;

processResize()

protected function processResize(
    int $width,
    int $height
): void;

processRotate()

protected function processRotate( int $degrees ): void;

processSave()

protected function processSave(
    string $file,
    int $quality
): bool;

processSharpen()

protected function processSharpen( int $amount ): void;

processText()

protected function processText(
    string $text,
    mixed $offsetX,
    mixed $offsetY,
    int $opacity,
    int $red,
    int $green,
    int $blue,
    int $size,
    string|null $fontFile = null
): void;

processWatermark()

protected function processWatermark(
    AdapterInterface $watermark,
    int $offsetX,
    int $offsetY,
    int $opacity
): void;

Image\Adapter\Imagick

Class Source on GitHub

Phalcon\Image\Adapter\Imagick

Image manipulation support. Resize, rotate, crop etc.

$image = new \Phalcon\Image\Adapter\Imagick("upload/test.jpg");

$image->resize(200, 200)->rotate(90)->crop(100, 100);

if ($image->save()) {
    echo "success";
}

Capabilities:

Aspect Support
Load formats Whatever the linked ImageMagick build supports
Render/save formats Whatever the linked ImageMagick build supports
Backend-only API liquidRescale(), setResourceLimit()

Visual semantics differ from the Gd adapter: blur() maps the radius to a blur sigma, while sharpen and reflection use ImageMagick's own scales. Switching the factory backend can change the rendered output.

@extends AbstractAdapter

Uses Imagick · ImagickDraw · ImagickDrawException · ImagickException · ImagickPixel · ImagickPixelException · Phalcon\Image\Enum · Phalcon\Image\Exception · Phalcon\Image\Exceptions\CompositeFailed · Phalcon\Image\Exceptions\ExtensionNotLoaded · Phalcon\Image\Exceptions\ImageLoadFailed · Phalcon\Image\Exceptions\ResizeFailed · Phalcon\Image\Exceptions\ResourceTypeError · Phalcon\Traits\Php\FileTrait

Method Summary

public __construct(string $file,int|null $width = null,int|null $height = null) Loads an image from a file, or creates a blank canvas. public __destruct() Destroys the loaded image to free up resources. public AbstractAdapter create(int $width,int $height) Creates a blank transparent canvas of the given dimensions, without the public AbstractAdapter liquidRescale(int $width,int $height,int $deltaX = 0,int $rigidity = 0) This method scales the images using liquid rescaling method. Only support public void setResourceLimit(int $type,int $limit) Sets the limit for a particular resource in megabytes protected void processBackground(int $red,int $green,int $blue,int $opacity) Execute a background. protected void processBlur( int $radius ) Blur image protected void processCrop(int $width,int $height,int $offsetX,int $offsetY) Execute a crop. protected void processFlip( int $direction ) Execute a flip. protected void processMask( AdapterInterface $mask ) Composite one image onto another protected void processPixelate( int $amount ) Pixelate image protected void processReflection(int $height,int $opacity,bool $fadeIn) Execute a reflection. protected string processRender(string $extension,int $quality) Execute a render. protected void processResize(int $width,int $height) Execute a resize. protected void processRotate( int $degrees ) Execute a rotation. protected bool processSave(string $file,int $quality) Execute a save. protected void processSharpen( int $amount ) Execute a sharpen. protected void processText(string $text,mixed $offsetX,mixed $offsetY,int $opacity,int $red,int $green,int $blue,int $size,string|null $fontFile = null) Execute a text protected void processWatermark(AdapterInterface $watermark,int $offsetX,int $offsetY,int $opacity) Add Watermark

Properties

protected int $version = 0

Methods

Public · 5

__construct()

public function __construct(
    string $file,
    int|null $width = null,
    int|null $height = null
);

Loads an image from a file, or creates a blank canvas.

When the file exists it is loaded. When the file does not exist and both a width and a height are supplied, a blank transparent canvas is created instead - its realpath, mime and type then describe a PNG canvas rather than the named file. Prefer Imagick::create() for the canvas case; this dual mode is slated for removal in the next major version.

__destruct()

public function __destruct();

Destroys the loaded image to free up resources.

create()

public static function create(
    int $width,
    int $height
): AbstractAdapter;

Creates a blank transparent canvas of the given dimensions, without the load-or-create ambiguity of the constructor.

liquidRescale()

public function liquidRescale(
    int $width,
    int $height,
    int $deltaX = 0,
    int $rigidity = 0
): AbstractAdapter;

This method scales the images using liquid rescaling method. Only support Imagick

setResourceLimit()

public function setResourceLimit(
    int $type,
    int $limit
): void;

Sets the limit for a particular resource in megabytes

@link https://www.php.net/manual/en/imagick.constants.php#imagick.constants.resourcetypes

Protected · 14

processBackground()

protected function processBackground(
    int $red,
    int $green,
    int $blue,
    int $opacity
): void;

Execute a background.

processBlur()

protected function processBlur( int $radius ): void;

Blur image

processCrop()

protected function processCrop(
    int $width,
    int $height,
    int $offsetX,
    int $offsetY
): void;

Execute a crop.

processFlip()

protected function processFlip( int $direction ): void;

Execute a flip.

processMask()

protected function processMask( AdapterInterface $mask ): void;

Composite one image onto another

processPixelate()

protected function processPixelate( int $amount ): void;

Pixelate image

processReflection()

protected function processReflection(
    int $height,
    int $opacity,
    bool $fadeIn
): void;

Execute a reflection.

processRender()

protected function processRender(
    string $extension,
    int $quality
): string;

Execute a render.

processResize()

protected function processResize(
    int $width,
    int $height
): void;

Execute a resize.

processRotate()

protected function processRotate( int $degrees ): void;

Execute a rotation.

processSave()

protected function processSave(
    string $file,
    int $quality
): bool;

Execute a save.

processSharpen()

protected function processSharpen( int $amount ): void;

Execute a sharpen.

processText()

protected function processText(
    string $text,
    mixed $offsetX,
    mixed $offsetY,
    int $opacity,
    int $red,
    int $green,
    int $blue,
    int $size,
    string|null $fontFile = null
): void;

Execute a text

processWatermark()

protected function processWatermark(
    AdapterInterface $watermark,
    int $offsetX,
    int $offsetY,
    int $opacity
): void;

Add Watermark

Image\Enum

Class Source on GitHub

  • Phalcon\Image\Enum

Constants

int AUTO = 4
int HEIGHT = 3
int HORIZONTAL = 11
int INVERSE = 5
int NONE = 1
int PRECISE = 6
int TENSILE = 7
int VERTICAL = 12
int WIDTH = 2

Image\Exception

Class Source on GitHub

Exceptions thrown in Phalcon\Image will use this class

Image\Exceptions\CompositeFailed

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Image\Exceptions\ExtensionNotLoaded

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $extension );

Image\Exceptions\ImageLoadFailed

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $file );

Image\Exceptions\InvalidColor

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $color );

Image\Exceptions\MissingDimensions

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Image\Exceptions\MissingHeight

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Image\Exceptions\MissingWidth

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Image\Exceptions\ResizeFailed

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Image\Exceptions\ResourceTypeError

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Image\Exceptions\TextRenderingFailed

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Image\Exceptions\UnsupportedImageType

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $format = "" );

Image\Exceptions\VersionMismatch

Class Source on GitHub

Uses Phalcon\Image\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $version );

Image\ImageFactory

Class Source on GitHub

Factory to create adapters for image manipulation

Uses Exception · Phalcon\Config\ConfigInterface · Phalcon\Contracts\Image\ImageTypes · Phalcon\Factory\AbstractFactory · Phalcon\Image\Adapter\AdapterInterface · Phalcon\Image\Adapter\Gd · Phalcon\Image\Adapter\Imagick · Phalcon\Traits\Support\Helper\Arr\GetTrait · Throwable

Method Summary

Methods

Public · 3

__construct()

public function __construct( array $services = [] );

Constructor

load()

public function load( mixed $config ): AdapterInterface;

Factory to create an instance from a Config object

newInstance()

public function newInstance(
    string $name,
    string $file,
    int|null $width = null,
    int|null $height = null
): AdapterInterface;

Creates a new instance

Protected · 2

getExceptionClass()

protected function getExceptionClass(): string;

getServices()

protected function getServices(): array;

Returns the available adapters