PHP Conference Japan 2024

imagepalettecopy

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagepalettecopy複製調色盤從一個影像到另一個影像

描述

imagepalettecopy(GdImage $dst, GdImage $src): void

imagepalettecopy() 將調色盤從 src 影像複製到 dst 影像。

參數

dst

目標影像物件。

src

來源影像物件。

返回值

無返回值。

更新日誌

版本 描述
8.0.0 dstsrc 現在預期為 GdImage 實例;先前預期為 資源

範例

範例 #1 imagepalettecopy() 範例

<?php
// 建立兩個調色盤圖像
$palette1 = imagecreate(100, 100);
$palette2 = imagecreate(100, 100);

// 在第一個調色盤圖像中將背景設為綠色
$green = imagecolorallocate($palette1, 0, 255, 0);

// 將調色盤從圖像 1 複製到圖像 2
imagepalettecopy($palette2, $palette1);

// 由於調色盤現在已複製,我們可以使用分配給圖像 1 的綠色,而無需兩次使用 imagecolorallocate()
imagefilledrectangle($palette2, 0, 0, 99, 99, $green);

// 將圖像輸出到瀏覽器
header('Content-type: image/png');

imagepng($palette2);
imagedestroy($palette1);
imagedestroy($palette2);
?>

新增註記

使用者貢獻的註記 2 則註記

buzz at nospam dot oska dot com
19 年前
實際上,它並沒有完全「複製」調色盤。它將顏色從來源調色盤複製到目標影像。最終在目標影像中得到的調色盤將是「顏色相同,順序不同」。如果您想要精確複製調色盤(如果您不小心,可能會弄亂您的影像),請使用以下程式碼
<?
// 這是 imagepalettecopy 的直接替代品,除了它不會嘗試修改目標影像中的任何顏色,只會修改調色盤。結果呢?如果您的調色盤不太相似,影像看起來會完全不同,而且可能很糟糕!
// 這是 imagepalettecopy 的直接替代方案,除了它不會嘗試修改目標影像中的任何顏色,只修改調色盤。結果?如果您的調色盤不太相似,影像看起來會完全不同,而且可能很糟!
function imagepalettecopy_exact ( $dst_img, $src_img) {
for( $c = 0 ; $c < imagecolorstotal($src_img); $c++) {
$col = imagecolorsforindex($src_img,$c); //取得顏色表中索引 'c' 的顏色
imagecolorset($dst_img,$c,$col[red],$col[green],$col[blue]); //將目標影像中索引 'c' 的顏色設定為 $col
}
}

?>
Los Olvidados
21 年前
更精確地說,這個函式會取代目標影像中的調色盤。
To Top