首先,你需要用 imagecreatefromgif() 函数加载 GIF 图片。这个函数会返回一个图像资源。
<span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-string">'example.gif'</span></span><span>;
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromgif</span></span><span>(</span><span><span class="hljs-variable">$filename</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$image</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'无法加载 GIF 图片'</span></span><span>);
}
</span></span>
接着,调用 imagecolorstotal 函数,传入刚才加载的图像资源,得到颜色总数。
<span><span><span class="hljs-variable">$colorCount</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorstotal</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span></span>
你可以直接输出颜色数量,确认结果。
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"图片中使用的颜色总数是: "</span></span><span> . </span><span><span class="hljs-variable">$colorCount</span></span><span>;
</span></span>
用完图像资源后,最好销毁它,释放内存。
<span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span></span>
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-string">'example.gif'</span></span><span>;
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromgif</span></span><span>(</span><span><span class="hljs-variable">$filename</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$image</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'无法加载 GIF 图片'</span></span><span>);
}
</span><span><span class="hljs-variable">$colorCount</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorstotal</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"图片中使用的颜色总数是: "</span></span><span> . </span><span><span class="hljs-variable">$colorCount</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
确保你的 PHP 环境启用了 GD 库,否则相关函数无法使用。
imagecolorstotal 只适用于调色板图像,真彩色图像返回的结果通常是 0。
GIF 图像最多可以使用 256 种颜色,因此返回值最大不会超过 256。