Image
The Image class offers a bunch of image processing features.
Namespace: \
File location: lib/image.php
Instantiation
$img = new Image ( [ string $file = NULL [, bool $flag = FALSE [, string $path = NULL ]]] )
You can create a new Image object from an existing image file like this:
$img = new Image('path/to/your/image.jpg'); // relative to UI search path
To create a new empty Image, i.e. for creating a captcha, just leave out the first $file
argument:
$img = new Image();
The constructor also has a 2nd argument, the $flag
option. Setting it to TRUE
enables the file history, which can save additional states for the current file, allowing for example to revert to a specified state after having applied a filter.
If your image file is not located within one of the UI search paths, you must use the $path
argument to specify its directory path.
In particular, set $path=''
if the provided file path is absolute.
Processing
invert
Invert image
$img->invert();
brightness
Adjust brightness
$img->brightness( int $level );
$level
range: -255 to 255
contrast
Adjust contrast
$img->contrast( int $level );
$level
range: -100 to 100
grayscale
Convert to grayscale
$img->grayscale();
smooth
Adjust smoothness
$img->smooth( int $level);
$level
range: -8 to 8, but as its been used for a matrix operation, greater values are applyable too, but may lead to unusable results.
emboss
Emboss the image
$img->emboss();
sepia
Apply sepia effect
$img->sepia();
pixelate
Pixelate the image
$img->pixelate( int $size );
$size
is the block size of a pixel, usually range: 0 - 100
blur
Blur the image using Gaussian filter
$img->blur( bool $selective );
Set $selective
to TRUE
to use a selective blur, otherwise a gaussian blur is used.
sketch
Apply sketch effect
$img->sketch();
hflip
Flip on horizontal axis
$img->hflip();
vflip
Flip on vertical axis
$img->vflip();
crop
Crop the image
$img->crop( int $x1, int $y1, int $x2, int $y2);
resize
Resize image (Maintain aspect ratio)
$img->resize( int $width [, int $height = NULL [, bool $crop = TRUE [, bool $enlarge = TRUE ]]] );
If $crop
is TRUE
the image will be resized to fit with its smallest side into the resize box.
The overflowing margins will be cropped relative to the center, so your resulting image will fully cover your desired width and height values.
If $crop
is FALSE
it will be resized to fit with its longest side into the resize box.
If $enlarge
is FALSE
the image will not be scaled up to fit in the resize box.
If either $width
or $height
is null, the other dimension is guessed in order to preserve the aspect ratio.
rotate
Rotate image
$img->rotate( int $angle );
overlay
Apply an image overlay
$img->overlay( Image $img [, int|array $align = NULL [, int $alpha = 100 ]] );
This is used to merge to images, i.e. for watermarks. You need to provide another Image object and can align that by the $align
argument in a bitwise way or provide an (x,y) array.
Example:
$img = new \Image;
$img = new \Image('images/south-park.jpg');
$overlay = new \Image('images/watermark.png');
$overlay->resize(100,38)->rotate(90);
$img->overlay( $overlay, \Image::POS_Right | \Image::POS_Middle );
// or
$img->overlay( $overlay, array(200,100), 60);
Possible values for $align
can be combined using this options:
x - align:
- POS_Left
- POS_Center
- POS_Right
y - align:
- POS_Top
- POS_Middle
- POS_Bottom
or just use an array containing the x and y values.
Use the $alpha
argument to control the transparency of the overlay (0-100).
Rendering
identicon
Generate identicon
$img->identicon( string $str [, int $size = 64 [, int $blocks = 4 ]] );
This method renders a unique identicon based on the given $str
.
The $size
argument defines the width and height of the resulting image. $blocks
(range 2 - 7) describes the granularity of the pattern blocks inside the identicon.
captcha
Generate CAPTCHA image
$img->captcha( string $font [, int $size = 24 [, int $len = 5 [, string|bool $key = NULL [, string $path='' [, $foregroundcolor=0xFFF [, $backgroundcolor=0x000 ]]]]]] );
This renders a captcha image. Please have a look to this user guide section about rendering captcha images, to see a little example.
If your font file is not located in the UI
directory, you can then set its location with the $path
argument.
Info
width
Return image width
$img->width();
height
Return image height
$img->height();
rgb
Convert RGB hex triad to array
$img->rgb( int | string $color );
You can pass an integer or a string. Even CSS shorthand notations are supported:
$img->rgb( 0xFF0033 ); // returns array( 255, 0, 51 );
$img->rgb( '#FF0033' ); // idem
$img->rgb( 'ff0033' ); // idem
$img->rgb( '#F03' ); // idem
$img->rgb( 'f03' ); // idem
Output
render
Output a raw image stream to the HTTP client
$img->render( [ string $imageformat = 'png' ] );
This method sends the image stream to the HTTP client. The image can be rendered in png
, jpeg
, gif
or wbmp
format.
If not specified, the PNG image format will be used. For instance this example will output a PNG image:
$img->render(); // Send a [Content-Type: image/png] stream to the HTTP client
Extra arguments are allowed, depending on the requested image format:
PNG format (default)
$img->render( 'png' [, int $quality [, int $filters ]] );
$quality
indicates the compression level from 0 to 9. The default quality seems to be 6.
$filters
allows reducing the PNG file size.
It is a bitmask field which may be set to any combination of the following constants: PNG_FILTER_NONE
, PNG_FILTER_SUB
, PNG_FILTER_UP
, PNG_FILTER_AVG
, PNG_FILTER_PAETH
.
PNG_NO_FILTER
or PNG_ALL_FILTERS
may also be used to respectively disable or activate all filters.
JPEG format
$img->render( 'jpeg' [, int $quality = 75 ] );
$quality
ranges from 0 (worst quality, smaller file) to 100 (best quality, biggest file).
GIF format
$img->render( 'gif' );
WBMP format
$img->render( 'wbmp' [, int $foreground ] );
You can set the foreground color with $foreground
by setting an identifier obtained from imagecolorallocate(). The default foreground color is black.
NB: internally this method is a wrapper for the following native PHP methods:
dump
Return image as a string
$img->dump();
This method accepts the same arguments as the render()
method above.
You can write the result of this method to a file:
$f3->write( '/path/to/file.png', $img->dump('png',9) );
History
The next methods only take effect when the $flag
argument of the constructor was set to TRUE
.
save
Save current state
$img->save();
This will create a new temporary image of the current state.
restore
Revert to specified state
$img->restore( [ int $state = 1 ] );
This fetches the original image state from the temp folder.
undo
Undo most recently applied filter
$img->undo();