画像処理では、画像に含まれる色の数を理解することが一般的な要件です。 PNG画像の場合、PNG形式は透明性と複数のカラーモデルをサポートするため、このプロセスはもう少し複雑です。幸いなことに、PHPはこの情報を簡単に入手するのに役立つ組み込み機能を提供します。
この記事では、 ImageColorStotalおよびImageCreateFrommpng関数を使用して、PNG画像の色の総数を取得する方法について詳しく説明します。
ImageCreateFrommpng関数は、PNGファイルから画像リソースを作成するために使用されます。その機能は、PNG画像を読み取り、PHPが処理できる画像リソースに変換することです。その後、この画像リソースでさまざまな操作を実行できます。
関数プロトタイプ:
<span><span>resource </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span>);
</span></span>
パラメーター:
$ filename :PNG画像ファイルへのパス。
返品値:
成功したら、画像リソースを返します。失敗したときにfalseを返します。
ImageColorStotal関数は、画像で使用される異なる色の総数を返します。これは、色の数を計算するための画像のカラーパレットに基づいているため、インデックス付きの色パターンの画像で機能します。
関数プロトタイプ:
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagecolorstotal</span></span><span>(resource </span><span><span class="hljs-variable">$image</span></span><span>);
</span></span>
パラメーター:
$画像:画像リソース。
返品値:
画像で使用される色の総数を返します。画像がダイレクトカラーモード(RGBなど)を使用している場合、この値は通常0です。
これら2つの関数を組み合わせることにより、PNG画像の色の数を簡単に取得できます。特定の手順は次のとおりです。
ImageCreateFrommpngを使用して、PNG画像ファイルを開き、画像リソースを取得します。
ImageColorStotal関数を使用して、画像で使用される色の総数を取得します。
出力結果。
以下は、これら2つの関数を使用してPNG画像で色の数を取得する方法を示す完全なサンプルコードです。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 設定 PNG 画像ファイルパス</span></span><span>
</span><span><span class="hljs-variable">$imagePath</span></span><span> = </span><span><span class="hljs-string">'example.png'</span></span><span>;
</span><span><span class="hljs-comment">// から試してみてください PNG ファイル作成画像リソース</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-variable">$imagePath</span></span><span>);
</span><span><span class="hljs-comment">// 画像リソースが正常に作成されているかどうかを確認します</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-literal">false</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-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-comment">// 画像で使用される色の数を取得します</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-comment">// 出力カラー番号</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"すべき PNG 画像に含まれる色の総数は: "</span></span><span> . </span><span><span class="hljs-variable">$colorCount</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">$image</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
画像リソースの作成:指定されたPNGファイルをImageCreateFrommpng関数を介して$画像変数にロードします。画像ファイルパスが正しくない場合、またはファイルを読み取れない場合、関数がfalseを返します。それに応じてチェックして処理する必要があります。
色の数を取得します: ImageColorStotal関数は、画像で使用される異なる色の数を返します。 PNG画像、特にインデックス付きカラーモードを使用するPNGの場合、返される色の数はゼロではありません。画像がダイレクトカラーモード(RGBなど)を使用している場合、関数は0を返します。
無料リソース:最後に、イメージストロイ機能を使用して画像リソースを解放して、メモリリークを避けます。
画像がパレット(つまり、インデックス付きカラーモード)を使用している場合、 ImageColorStotalは実際の色の数を返します。ただし、画像がダイレクトカラーモード(RGB)を使用している場合、この関数は0を返すため、使用するときは画像のカラーモードに注意する必要があります。
扱っている画像ファイルが大きい場合、またはこのような頻繁な操作が必要な場合は、適切な例外処理とエラーチェックをコードに追加することをお勧めします。
ImageCreateFrommpngとImageColorstotal関数を使用することにより、PHPはPNG画像の総数を取得するための簡単で効率的な方法を提供します。これは、画像分析、最適化、処理に非常に役立ちます。うまくいけば、この記事がこれらの2つの機能をよりよく理解し、プロジェクトに適用するのに役立つことを願っています。
関連タグ:
PNG