note 108404 added to imagick.orderedposterizeimage
| From: | holdoffhunger at gmail dot com | Date: | Tue, 24 Apr 2012 00:39:35 +0000 |
| Subject: | note 108404 added to imagick.orderedposterizeimage | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-187314@lists.php.net to get a copy of this message | ||
Originally, I thought this function would be similar to the Posterize function, or at least, any one
of the Imagick class functions that produces an artistic effect (like the oilPaintImage function).
This function can be used for those purposes, but it is mostly geared toward print production. The
OrderedPosterize is simply a highly flexible dithering tool. The intention essentially is to
produce high-resolution imagery by means of using constant dots across a medium that vary in size
according to the detail of the imagery. Everyone has seen a dithered photograph inside of a
newspaper, but the wiki page provides better examples: http://en.wikipedia.org/wiki/Dither .
The two parameters are unusual to someone who simply wants to get the use of this function without
fussing too much about the Imagick class.
First parameter: The threshold_map is a set of "brushes" predefined by a very simple xml
file. They are: threshold, checks, o2x2, o3x3, o4x4, o8x8, h4x4a, h6x6a, h8x8a, h4x4o, h6x6o,
h8x8o, h16x16o, c5x5b, c5x5w, c6x6b, c6x6w, c7x7b, and c7x7w. These are the values you are expected
to input as parameters for the Thershold_Map value. Much better descriptions of these brush shapes
available at the Imagick site: http://www.imagemagick.org/Usage/quantize/tmaps_list.txt
.
Second parameter: The channel is any of the constants as predefined by the Imagick class. In the
code, the value looks like "imagick::CHANNEL_RED", but you have the "_value"
options of: red, undefined, gray, cyan, green, magenta, blue, yellow, alpha, opacity, matte, black,
index, all, and default. More info here: http://www.php.net/manual/en/imagick.constants.php#imagick.constants.channel
.
Finally, don't forget you can use bitwise operators on the second parameter. That means you
can use & to AND them, | to OR them, & to XOR them, and ~ to NEGATE them. A valid parameter
for the second parameter would be: "((~imagick::CHANNEL_GREEN) ^ imagick::CHANNEL_YELLOW) |
imagick::CHANNEL_MAGENTA)". You can get extremely creative in this particular parameter. And
if you want to define your own brushes using simple XML, then that's also true of the first
parameter, too.
Note: You can use this function artistically. How? Use the orderedPosterizeImage to give the
image some texture (a photo of a vase, for instance), and then use your OilPoint, Sketch, or
Standard Posterize to give the image a cool effect. Alone, though, seems pretty boring.
And now, a very simple demonstration :
<?php
// Author: holdoffhunger@gmail.com
// Filename
// ---------------------------------------------
$file_to_grab_with_location =
"graphics_engine/image_workshop_directory/ordered_posterize_source.bmp"
$imagick_type = new Imagick();
// Open File
// ---------------------------------------------
$file_handle_for_viewing_image_file = fopen($file_to_grab_with_location, 'a+');
$imagick_type->readImageFile($file_handle_for_viewing_image_file);
// Perform Function
// ---------------------------------------------
$imagick_type->orderedPosterizeImage("o2x2", imagick::CHANNEL_GREEN);
// Save File
// ---------------------------------------------
$file_to_save_with_location =
"graphics_engine/image_workshop_directory/ordered_posterize_result.bmp"
$file_handle_for_saving_image_file = fopen($file_to_save_with_location, 'a+');
$imagick_type->writeImageFile($file_handle_for_saving_image_file);
?>
----
Server IP: 69.147.83.197
Probable Submitter: 68.9.137.178
----
Manual Page -- http://www.php.net/manual/en/imagick.orderedposterizeimage.php
Edit -- https://master.php.net/note/edit/108404
Del: integrated -- https://master.php.net/note/delete/108404/integrated
Del: useless -- https://master.php.net/note/delete/108404/useless
Del: bad code -- https://master.php.net/note/delete/108404/bad+code
Del: spam -- https://master.php.net/note/delete/108404/spam
Del: non-english -- https://master.php.net/note/delete/108404/non-english
Del: in docs -- https://master.php.net/note/delete/108404/in+docs
Del: other reasons-- https://master.php.net/note/delete/108404
Reject -- https://master.php.net/note/reject/108404
Search -- https://master.php.net/manage/user-notes.php