使用 Ubuntu 伺服器的用戶請注意,此函式是在 PHP 的 GD 函式庫分支中新增的,在 Ubuntu php5-gd 套件中預設不提供。
以下是安裝 PHP GD 版本的方法: http://preview.tinyurl.com/yel4r7t
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
imagecolormatch — 使影像調色盤版本的顏色與真彩色版本更接近
image1
一個真彩色影像物件。
image2
一個調色盤影像物件,指向與 image1
大小相同的影像。
範例 #1 imagecolormatch() 範例
<?php
// 設定真彩色和調色板圖像
$im1 = imagecreatefrompng('./gdlogo.png');
$im2 = imagecreate(imagesx($im1), imagesy($im1));
// 為 $im2 添加一些顏色
$colors = Array();
$colors[] = imagecolorallocate($im2, 255, 36, 74);
$colors[] = imagecolorallocate($im2, 40, 0, 240);
$colors[] = imagecolorallocate($im2, 82, 100, 255);
$colors[] = imagecolorallocate($im2, 84, 63, 44);
// 將這些顏色與真彩色圖像匹配
imagecolormatch($im1, $im2);
// 從記憶體中釋放
imagedestroy($im1);
imagedestroy($im2);
?>
使用 Ubuntu 伺服器的用戶請注意,此函式是在 PHP 的 GD 函式庫分支中新增的,在 Ubuntu php5-gd 套件中預設不提供。
以下是安裝 PHP GD 版本的方法: http://preview.tinyurl.com/yel4r7t
這個函數簡直是天賜!它的運作方式與文件所述完全一致。
我正在開發一個應用程式,需要取得一個透明 GIF,將 GIF 疊加在使用者定義的背景顏色上,最後根據使用者定義的百分比縮放 GIF。
我讓它產生高品質最終圖像(例如:無鋸齒邊緣和平滑縮放)的唯一方法,是將 GIF 轉換為 JPG,然後像這樣將 JPG 複製到新的 GIF 圖像中:
// 開啟透明 gif
$GIFimg = imagecreatefromgif($file_path);
// 建立 jpg 圖像
$JPGimg = imagecreatetruecolor($width, $height);
// 將 GIF 複製到 JPG
imagecopy($JPGimg, $GIFimg, 0, 0, 0, 0, $width, $height);
// 建立真彩色圖像
$JPGscaled = imagecreatetruecolor($n_width, $n_height);
// 使用真彩色圖像縮放新的 JPG
imagecopyresampled($JPGscaled, $JPGimg, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// 建立最終的 GIF 圖像
$GIFfinal = imagecreate($n_width, $n_height);
// 將縮放後的 JPG 複製回 GIF
imagecopymerge($GIFfinal, $JPGscaled, 0, 0, 0, 0, $n_width, $n_height, 100);
除了最後一步(將 JPG 複製到 GIF)之外,其他步驟都運作良好。如果 JPG 的顏色過多,該函數會將顏色索引化以使其成為調色板圖像。因此,最終圖像會包含錯誤的顏色。
在程式碼底部新增這一行程式碼就解決了所有問題。
imagecolormatch($JPGscaled, $GIFfinal);
我希望這能幫助任何在圖像格式之間來回轉換並處理調色板問題和色彩校正的人。另外,請注意,以上程式碼只是一個範例,複製貼上並不能直接使用。