Source:
<?php
/*
* This example draws a variety of shapes on an otherwise black image.
* Demonstrates draw/filled rectangles, polygins, cliprects, ellipses, etc.
*/
require './class.ImlibImage.php';
require './class.ImlibColor.php';
require './class.ImlibText.php';
require './class.ImlibCliprect.php';
require './class.ImlibDraw.php';
require './class.ImlibPoly.php';
$im = new ImlibImage();
$im->create(225,260);
$outlinecolor = Array(255,0,0,255);
$color = Array(255,127,0,255);
$box = new ImlibDraw();
$box->set_image($im->get_id());
$box->set_color_array($outlinecolor);
$box->draw_rectangle(7,7,106,56);
$box->set_color_array($color);
$box->fill_rectangle(10,10,100,50);
$poly = new ImlibPoly();
$poly->new_poly();
$poly->set_image($im->get_id());
$poly->set_color(255,0,255,255);
$poly->add_point(100,100);
$poly->add_point(215,110);
$poly->add_point(150,215);
$poly->add_point(102,255);
// The cliprect will leave a gap in the middle of this polygon
$poly->set_cliprect(100,50,125,110); // Draw the top
$poly->draw();
$poly->set_cliprect(100,190,125,70); // Draw the bottom
$poly->draw();
$poly->free();
$poly->set_cliprect(0,0,0,0); // Turns off the clipping rectangle
$poly->new_poly();
$poly->set_color(255,255,255,255);
$poly->add_point(106,106);
$poly->add_point(205,115);
$poly->add_point(147,211);
$poly->add_point(106,245);
$poly->draw();
$poly->free();
// This will draw a few pseudo-randomly colored ellipses
$j = 30;
for ($i = 90; $i < 260; $i += 20)
{
$box->set_color($i,$i*2,255-$i*2,255);
$box->draw_ellipse($j,$i,10,$j/2);
$j += 20;
if ($j > 70)
$j = 25;
}
header("Content-Type:image/png");
$im->dump();
$im->free();
?>
Source:
<?php
/*
* This example takes a source image and outputs an image with four
* scaled copies of the image. The original, and the image flipped
* using the three flip functions: horizontal, vertical, and diagonal.
*
* The images are labeled using the ImlibText class, and a background
* is filled behind them using a filled rectangle from the ImlibDraw class.
*/
require './class.ImlibImage.php';
require './class.ImlibColor.php';
require './class.ImlibCliprect.php';
require './class.ImlibDraw.php';
require './class.ImlibText.php';
$padding = 20;
$thumbw = 170;
$thumbh = ''; // If this is left blank, the height will be calculated
$bgarray = Array(220,115,115,255);
$textarray = Array(255,255,255,255);
$srcname = './lain-closetheworld.png';
// $mode can be 'horizontal', 'vertical', or 'diagonal'
function flipCreate($obj,$mode)
{
$cb = "flip_$mode";
$obj->$cb();
$new = $obj->create_clone();
$obj->$cb();
return $new;
}
$im = new ImlibImage();
$im->load($srcname);
$orig = $im->create_scaled($thumbw,$thumbh);
$im->free();
$imw = $orig->get_width();
$imh = $orig->get_height();
// Create the image large enough to fit four scaled copies of $srcname
$dst = new ImlibImage();
$dst->create(2*$imw + 3*$padding, 2*$imh + 5*$padding);
// Load in a font and set the color and image to draw on
$txt = new ImlibText();
$txt->set_color_array($textarray);
$txt->set_image($dst->get_id());
$txt->load('','arial',16);
// Get a drawing object and set its color and image to draw on
$box = new ImlibDraw();
$box->set_color_array($bgarray);
$box->set_image($dst->get_id());
$orig_alpha = $orig->has_alpha();
$box->fill_rectangle($padding-3,$padding-3, $imw+6,$imh+6);
$txt->draw($padding,$padding+$imh,'Original');
$orig->blend_onto_image($dst->get_id(),0,0,$orig_alpha,$imw,$imh,
$padding,$padding, $imw,$imh,0,$orig_alpha,0);
$horiz = flipCreate($orig,'horizontal');
$horiz_alpha = $horiz->has_alpha();
$box->fill_rectangle(2*$padding-3+$imw,$padding-3, $imw+6,$imh+6);
$txt->draw(2*$padding+$imw,$padding+$imh,'Horizontal');
$horiz->blend_onto_image($dst->get_id(),0,0,$horiz_alpha,$imw,$imh,
2*$padding+$imw,$padding, $imw,$imh,0,$horiz_alpha,0);
$vert = flipCreate($orig,'vertical');
$vert_alpha = $vert->has_alpha();
$box->fill_rectangle($padding-3,3*$padding-3+$imh, $imw+6,$imh+6);
$txt->draw($padding,3*$padding+2*$imh,'Vertical');
$vert->blend_onto_image($dst->get_id(),0,0,$vert_alpha,$imw,$imh,$padding,
3*$padding+$imh,$imw,$imh,0,$vert_alpha,0);
// In order to keep things simple, this image will be cropped off if it's
// not square. This is done to keep things simple. To show the whole
// diagonally cropped image, the dimensions for $dst would need to be
// calculated from the resulting height of the diagonal version of the image
$diag = flipCreate($orig,'diagonal');
$diag_alpha = $diag->has_alpha();
$box->fill_rectangle(2*$padding-3+$imw,3*$padding-3+$imh, $imw+6,$imh+6);
$txt->draw(2*$padding+$imw,3*$padding+2*$imh,'Diagonal');
$diag->blend_onto_image($dst->get_id(),0,0,$diag_alpha,$imw,$imh,2*$padding+$imw,
3*$padding+$imh,$imw,$imh,0,$diag_alpha,0);
header("Content-Type:image/png");
$dst->dump();
$dst->free();
?>
Source:
<?php
/*
* This example is mostly for playing with color ranges (gradients)
* and alpha channels.
*/
require './package.Imlib.php';
$red = Array(255,35,35,255);
$blue = Array(35,65,255,255);
$text = Array(200,220,255,255);
$shadow = Array(10,10,10,100);
// Create objects
$im = new ImlibImage;
$cr = new ImlibColorRange;
$d = new ImlibDraw;
$t = new ImlibText;
// Set up objects
$im->create(250,150);
$cr->create();
$cr->set_image($im->get_id());
$d->set_image($im->get_id());
$t->set_image($im->get_id());
$t->load('','comic','20');
// Large blue rectangle and gradient
$d->set_color(22,28,235,255);
$d->fill_rectangle(10,10,210,110);
$cr->add_color_array(0, $red);
$cr->add_color(0,0,225,225,255);
$cr->add_color_array(0, $blue);
$cr->fill_rectangle(15,15,200,100,125);
// Text with semitransparent shadow
$t->set_color_array($shadow);
$t->draw(43,48,'Showing off.');
$t->set_color_array($text);
$t->draw(40,45,'Showing off.');
// Purple semitransparent square
$d->set_color(195,105,195,127);
$d->fill_rectangle(30,90,50,50);
// Green-to-transparent gradient square
$cr->free();
$cr->create();
$cr->add_color(0,0,255,0,0);
$cr->add_color(0,0,255,0,50);
$cr->add_color(0,0,255,0,255);
$cr->fill_rectangle(90,90,50,50,235);
header("Content-Type:image/png");
$im->dump();
?>
Return to the main page