(PECL imagick 2.0.0)
Adjusts the current affine transformation matrix
bool ImagickDraw::affine ( array $affine )
Adjusts the current affine transformation matrix with the specified affine transformation matrix.
Parameters:
affine
Affine matrix parameters
Returns:
No value is returned.
This function is currently not documented; only its argument list is available.
Examples:
ImagickDraw::affine()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | <?php function affine( $strokeColor , $fillColor , $backgroundColor ) { $draw = new \ImagickDraw(); $draw ->setStrokeWidth(1); $draw ->setStrokeOpacity(1); $draw ->setStrokeColor( $strokeColor ); $draw ->setFillColor( $fillColor ); $draw ->setStrokeWidth(2); $PI = 3.141592653589794; $angle = 60 * $PI / 360; //Scale the drawing co-ordinates. $affineScale = array ( "sx" => 1.75, "sy" => 1.75, "rx" => 0, "ry" => 0, "tx" => 0, "ty" => 0); //Shear the drawing co-ordinates. $affineShear = array ( "sx" => 1, "sy" => 1, "rx" => sin( $angle ), "ry" => -sin( $angle ), "tx" => 0, "ty" => 0); //Rotate the drawing co-ordinates. The shear affine matrix //produces incorrectly scaled drawings. $affineRotate = array ( "sx" => cos ( $angle ), "sy" => cos ( $angle ), "rx" => sin( $angle ), "ry" => -sin( $angle ), "tx" => 0, "ty" => 0,); //Translate (offset) the drawing $affineTranslate = array ( "sx" => 1, "sy" => 1, "rx" => 0, "ry" => 0, "tx" => 30, "ty" => 30); //The identiy affine matrix $affineIdentity = array ( "sx" => 1, "sy" => 1, "rx" => 0, "ry" => 0, "tx" => 0, "ty" => 0); $examples = [ $affineScale , $affineShear , $affineRotate , $affineTranslate , $affineIdentity ,]; $count = 0; foreach ( $examples as $example ) { $draw ->push(); $draw ->translate(( $count % 2) * 250, intval ( $count / 2) * 250); $draw ->translate(100, 100); $draw ->affine( $example ); $draw ->rectangle(-50, -50, 50, 50); $draw ->pop(); $count ++; } //Create an image object which the draw commands can be rendered into $image = new \Imagick(); $image ->newImage(500, 750, $backgroundColor ); $image ->setImageFormat( "png" ); //Render the draw commands in the ImagickDraw object //into the image. $image ->drawImage( $draw ); //Send the image to the browser header( "Content-Type: image/png" ); echo $image ->getImageBlob(); } ?> |
Please login to continue.