當前位置: 首頁> 最新文章列表> 如何將imagepalettecopy 與imagecreate 函數結合使用?實用示例分享

如何將imagepalettecopy 與imagecreate 函數結合使用?實用示例分享

gitbox 2025-08-21
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
本示例文章將介紹如何將 imagepalettecopy 與 imagecreate 函數結合使用,
并通过实例代码展示其應用場景與技巧。
*/</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>

----------------------------------------

</span><span><span class="hljs-comment"># 如何將 imagepalettecopy 與 imagecreate 函數結合使用?實用示例分享</span></span><span>


</span><span><span class="hljs-comment">## 一、`imagecreate` 與 `imagepalettecopy` 簡介</span></span><span>

- **`</span><span><span class="hljs-title function_ invoke__">imagecreate</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$width</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$height</span></span><span>)`**  
  用於創建一個基於調色板的圖像(索引顏色圖像),適合對顏色數量有限的圖片進行處理。  
  返回值是一個圖像資源句柄。

- **`</span><span><span class="hljs-title function_ invoke__">imagepalettecopy</span></span><span>(resource </span><span><span class="hljs-variable">$dst</span></span><span>, resource </span><span><span class="hljs-variable">$src</span></span><span>)`**  

</span><span><span class="hljs-comment">## 二、應用場景</span></span><span>

</span><span><span class="hljs-number">1</span></span><span>. **批量生成相同風格的縮略圖**  

</span><span><span class="hljs-number">2</span></span><span>. **索引圖像的調色板同步**  
   如果多個索引圖像需要在後續合併或比較顏色,調色板保持一致非常重要。

</span><span><span class="hljs-comment">## 三、代碼示例</span></span><span>


```php
</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 創建源圖像(索引顏色)</span></span><span>
</span><span><span class="hljs-variable">$src</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreate</span></span><span>(</span><span><span class="hljs-number">200</span></span><span>, </span><span><span class="hljs-number">200</span></span><span>);
</span><span><span class="hljs-variable">$red</span></span><span>   = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$src</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-variable">$green</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$src</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-variable">$blue</span></span><span>  = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$src</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>);

</span><span><span class="hljs-comment">// 用紅色填充背景</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefill</span></span><span>(</span><span><span class="hljs-variable">$src</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>);

</span><span><span class="hljs-comment">// 創建目標圖像(索引顏色)</span></span><span>
</span><span><span class="hljs-variable">$dst</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreate</span></span><span>(</span><span><span class="hljs-number">200</span></span><span>, </span><span><span class="hljs-number">200</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">imagepalettecopy</span></span><span>(</span><span><span class="hljs-variable">$dst</span></span><span>, </span><span><span class="hljs-variable">$src</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">imagefill</span></span><span>(</span><span><span class="hljs-variable">$dst</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$blue</span></span><span>);

</span><span><span class="hljs-comment">// 輸出圖片進行對比</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Content-Type: image/png"</span></span><span>);

</span><span><span class="hljs-comment">// 這裡只輸出目標圖像,你可以根據需要保存兩個圖像進行查看</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$dst</span></span><span>);

</span><span><span class="hljs-comment">// 釋放資源</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$src</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$dst</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

四、總結

通過imagecreateimagepalettecopy的結合,我們可以方便地在多個索引圖像間共享相同的調色板,避免了手動分配相同顏色的重複工作。在批量處理、調色板同步、保持視覺統一等場景中,這種方法都非常實用。掌握這些函數的用法,將有助於我們在PHP 圖像處理項目中更高效地管理顏色數據。

 <span></span>