如果 僅僅是為了顯示圖片在瀏覽器上 那篇就絲毫沒有用處
可是如果是用來做影像管理 圖庫這類的東西 那是大大的不足
印刷與顯示的需求差異很大
印刷要求的是 CMYK 300dpi
而顯示要求的是 RGB 72dpi
也許 在儲存上 還是要以 CMYK 300dpi來儲存 但是在網頁顯示上 卻需要 RGB 72dpi
所以 就必須要有 檢查色域與改變色域的功能
而這兩個功能都是imagemagick所擁有的
以下是每個色域的代號
ColorspaceType constants
0 MW_UndefinedColorspace
1 MW_RGBColorspace
2 MW_GRAYColorspace
3 MW_TransparentColorspace
4 MW_OHTAColorspace
5 MW_LABColorspace
6 MW_XYZColorspace
7 MW_YCbCrColorspace
8 MW_YCCColorspace
9 MW_YIQColorspace
10 MW_YPbPrColorspace
11 MW_YUVColorspace
12 MW_CMYKColorspace
13 MW_sRGBColorspace
14 MW_HSBColorspace
15 MW_HSLColorspace
16 MW_HWBColorspace
由於 PHP 5.2.6 之後就可以安裝 imagick 所以 我把同樣的功能寫成兩個不同的函式
一個是在 imagick 上使用 一個是在 magickwand 上使用
function IM_ColorSpace_Check($file){
$image=new Imagick($file);
$ColorspaceType = $image->getImageColorspace($file);
return $ColorspaceType;
}
imagick 傳回的是一個數值 例如 12 代表 CMYK
function MW_ColorSpace_Check($file){
$mgck_wnd = NewMagickWand();
MagickReadImage($mgck_wnd, $file);
$ColorspaceType = MagickGetImageColorspace($mgck_wnd);
return $ColorspaceType;
}
magickwand 傳回的是一個功能變數 例如 MW_CMYKColorspace 代表 CMYK 當然也就是 12
其實我個人發現 這16個色域 絕大部分是很少用到的 可卻也缺少一個 index color
這是GIF的格式
function IM_ColorSpace_Change($file, $ColorspaceType, $outputfile = False){
$image=new Imagick($file);
$image->setImageColorspace($ColorspaceType);
if ($output == False){
$image->writeImage($file);}
else{
$image->writeImage($outputfile);}
}
function MW_ColorSpace_Change($file, $ColorspaceType, $outputfile = False){
$mgck_wnd = NewMagickWand();
MagickReadImage($mgck_wnd, $file);
MagickSetImageColorspace($mgck_wnd, $ColorspaceType);
if ($outputfile == False){
MagickWriteImage($mgck_wnd);}
else{
MagickWriteImage($mgck_wnd, $outputfile);}
}
同樣的 一個是給 imagick 上使用 一個是給 magickwand 上使用
看起來是乎很方便 但是試過之後就會發現 這功能完全不能用
在網路上也幾乎沒有找到有這方面的範例
RGB的色域較廣 所以 可以轉換到CMYK的時候 有些顏色就會消失 某些圖片看起來會比較暗沉
而色域較小的CMYK 轉換到 RGB的時候 卻可以完全轉換
這個差異大家可以用Photoshop試試看就知道了
當然我不強求 RGB to CMYK的時候會有多漂亮
但是 CMYK to RGB 卻不能變化太多
可是 試驗下來 卻發現 通通會變色 而且差異蠻大的
這樣一來 還能用嗎
我知道 RGB to CMYK 的時候 先轉換為 index color 顏色掉得比較少
可是 卻沒有 index color 可以中介轉換
試了之後 我只能說 色域轉換個功能是玩具
沒有留言:
張貼留言