ImageMagick 中的 Rendering Intent 變數用於提供對 ICC 色彩描述檔的支援。從 getRenderingIntent 函式可以預期得到五個結果,這些結果是 ImageMagick 中渲染意圖的預定義常數。這些值看起來像「imagick::RENDERINGINTENT_UNDEFINED」,「_VALUE」值為:undefined、saturation、perceptual、absolute 和 relative。印出來,Undefined 為 0,Saturation 為 1,Perceptual 為 2,Absolute 為 3,而 Relative 為 4。
官方 ImageMagick 文件提供了關於這些值的良好說明。( https://imagemagick.dev.org.tw/RMagick/doc/constants.html#RenderingIntent ) Undefined 表示「無意圖」,Saturation 表示「一種渲染意圖,指定保留影像中像素的飽和度,可能會犧牲色相和亮度的準確性」,Perceptual Intent 表示「一種渲染意圖,指定壓縮或擴展影像的完整色域以填滿目的地裝置的色域。保留灰階平衡,但可能不會保留色彩準確性」,Absolute Intent 表示「絕對色度」,而 Relative Intent 表示「相對色度」。
每次執行此函式時,它總是產生相同的結果:#2,表示 Perceptual Intent。但是這是有道理的,因為 ImageMagick 文件中關於 Rendering Intent 的說明,「通常,使用者或應用程式會在執行階段或嵌入時動態設定渲染意圖」。ImageMagick 文件也建議使用以下連結,以更好地理解 Colorspace Profiles 中的 Rendering Intent: http://www.cambridgeincolour.com/tutorials/color-space-conversion.htm 。
一些範例程式碼
<?php
// 作者:holdoffhunger@gmail.com
// Imagick 類型
// ---------------------------------------------
$imagick_type = new Imagick();
// 開啟檔案
// ---------------------------------------------
$file_to_grab = "image_workshop_directory/test.jpg";
$file_handle_for_viewing_image_file = fopen($file_to_grab, 'a+');
// 抓取檔案
// ---------------------------------------------
$imagick_type->readImageFile($file_handle_for_viewing_image_file);
// 取得渲染意圖值
// ---------------------------------------------
$imagick_rendering_intent = $imagick_type->getImageRenderingIntent();
switch($imagick_rendering_intent)
{
case '0':
$image_rendering_intent_evaluated = "Undefined";
break;
case '1':
$image_rendering_intent_evaluated = "Saturation";
break;
case '2':
$image_rendering_intent_evaluated = "Perceptual";
break;
case '3':
$image_rendering_intent_evaluated = "Absolute";
break;
case '4':
$image_rendering_intent_evaluated = "Relative";
break;
}
// 列印渲染意圖值
// ---------------------------------------------
print("# $imagick_rendering_intent - $image_rendering_intent_evaluated");
?>