Imagick::orderedPosterizeImage
(PECL imagick 2 >= 2.2.2, PECL imagick 3)
Imagick::orderedPosterizeImage — 配列ディザリングを行う
警告
この関数は Imagick 3.4.4 以降では 非推奨 になりました。この関数に依存したコードを書くのはやめましょう。
説明
public Imagick::orderedPosterizeImage(string
$threshold_map
, int $channel
= Imagick::CHANNEL_DEFAULT): bool定義済みのディザリング閾値マップにもとづいた、複数の強度レベルによる配列ディザリングを行います。 入力の引数に応じて、各チャネルで異なるレベルを使用することができます。 このメソッドは、ImageMagick バージョン 6.3.1 以降で Imagick をコンパイルした場合に使用可能です。
パラメータ
threshold_map
-
使用するディザリング閾値マップを含む文字列。
channel
-
チャネルモードに応じたチャネル定数を指定します。 複数のチャネルに適用するには、定数をビット演算子で組み合わせます。 チャネル定数 の一覧を参照ください。
戻り値
成功した場合に true
を返します。
エラー / 例外
エラー時に ImagickException をスローします。
例
例1 Imagick::orderedPosterizeImage()
<?php
function orderedPosterizeImage($imagePath, $orderedPosterizeType) {
$imagick = new \Imagick(realpath($imagePath));
$imagick->orderedPosterizeImage($orderedPosterizeType);
$imagick->setImageFormat('png');
header("Content-Type: image/png");
echo $imagick->getImageBlob();
}
//orderedPosterizeImage($imagePath, 'o4x4,3,3');
//orderedPosterizeImage($imagePath, 'o8x8,6,6');
orderedPosterizeImage($imagePath, 'h8x8a');
?>
+add a note
User Contributed Notes 1 note
holdoffhunger at gmail dot com ¶
12 years ago
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);
?>