現在の位置: ホーム> 最新記事一覧> ImageCreateFrommpng()を使用するときに画像の幅と高さを読み取るか処理する方法は?

ImageCreateFrommpng()を使用するときに画像の幅と高さを読み取るか処理する方法は?

M66 2025-06-28

PHPでは、 ImageCreateFrommpng()関数を使用して、PNG形式の画像ファイルから画像リソース(GDイメージリソース)を作成します。この関数は、特に動的な画像生成、画像処理、または画像編集に関しては、画像ファイルの処理に非常に一般的です。ただし、多くの開発者がImageCreatefrommpng()を使用して画像リソースを作成した後、多くの場合、さらに処理するために画像の幅と高さを取得する必要があります。

この記事では、ImageCreateFrommpng()関数を使用する際の画像の幅と高さを読み取り、処理する方法について詳しく説明します。

1。画像の幅と高さを取得するには、 ImagesX()Imagesy()機能を使用します

PHPは、画像リソースの幅と高さを取得するためのImagesX()Imagesy()の2つの機能を提供します。これら2つの関数を通じて、 ImageCreateFrommpng()を呼び出して画像リソースを作成した後、画像の特定のサイズを取得できます。

サンプルコード:

 <span><span><span class="hljs-meta">&lt;?php</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-string">'path/to/your/image.png'</span></span><span>);

</span><span><span class="hljs-comment">// 画像の幅を取得します</span></span><span>
</span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesx</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-variable">$height</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesy</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">"画像の幅はです: "</span></span><span> . </span><span><span class="hljs-variable">$width</span></span><span> . </span><span><span class="hljs-string">" ピクセル\n"</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">$height</span></span><span> . </span><span><span class="hljs-string">" ピクセル\n"</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">?&gt;</span></span><span>
</span></span>

この例では、最初にimageCreatefrommpng()関数を使用して画像ファイルをロードし、 Imagesx()を使用して画像の幅を取得し、画像()を使用して画像の高さを取得します。最後に、画像の幅と高さをブラウザに出力します。

2。getImagesize ()を組み合わせて、画像の幅と高さを取得します

ImagesX()Imagesy()を使用することに加えて、 GetImagesize()関数を使用して画像の幅と高さを取得することもできます。 getImagesize()は、画像のサイズを返すだけでなく、画像のタイプなどを含むより多くの画像情報を返します。これは、ファイル情報を処理する必要があるシナリオに非常に役立ちます。

サンプルコード:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 使用 getimagesize() 画像の幅を取得します和高度</span></span><span>
</span><span><span class="hljs-variable">$image_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getimagesize</span></span><span>(</span><span><span class="hljs-string">'path/to/your/image.png'</span></span><span>);

</span><span><span class="hljs-comment">// 画像の幅を取得します</span></span><span>
</span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-variable">$image_info</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>];

</span><span><span class="hljs-comment">// 画像の高さを取得します</span></span><span>
</span><span><span class="hljs-variable">$height</span></span><span> = </span><span><span class="hljs-variable">$image_info</span></span><span>[</span><span><span class="hljs-number">1</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">"画像の幅はです: "</span></span><span> . </span><span><span class="hljs-variable">$width</span></span><span> . </span><span><span class="hljs-string">" ピクセル\n"</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">$height</span></span><span> . </span><span><span class="hljs-string">" ピクセル\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

ここで、 getImagesize()アレイを返します。配列の最初の要素( $ image_info [0] )は画像の幅であり、2番目の要素( $ image_info [1] )は画像の高さです。

3.画像の幅と高さを処理します

多くの画像処理シナリオでは、画像の幅と高さに基づいて処理を実行する必要がある場合があります。たとえば、画像のサイズを調整し、画像をトリミングします。画像の幅と高さを取得することで、これらの機能を実現できます。

3.1画像スケーリング

画像を指定された幅と高さにスケーリングする必要がある場合は、 ImageCopyResampled()関数を使用できます。

 <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">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-string">'path/to/your/image.png'</span></span><span>);

</span><span><span class="hljs-comment">// 元の画像の幅と高さを取得します</span></span><span>
</span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesx</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-variable">$height</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesy</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-variable">$new_width</span></span><span> = </span><span><span class="hljs-number">200</span></span><span>;
</span><span><span class="hljs-variable">$new_height</span></span><span> = </span><span><span class="hljs-number">150</span></span><span>;

</span><span><span class="hljs-comment">// 新しい空白の画像を作成します</span></span><span>
</span><span><span class="hljs-variable">$new_image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-variable">$new_width</span></span><span>, </span><span><span class="hljs-variable">$new_height</span></span><span>);

</span><span><span class="hljs-comment">// 使用 imagecopyresampled() スケーリング画像</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagecopyresampled</span></span><span>(</span><span><span class="hljs-variable">$new_image</span></span><span>, </span><span><span class="hljs-variable">$image</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">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$new_width</span></span><span>, </span><span><span class="hljs-variable">$new_height</span></span><span>, </span><span><span class="hljs-variable">$width</span></span><span>, </span><span><span class="hljs-variable">$height</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-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$new_image</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-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$new_image</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

この例では、PNG画像をロードし、幅と高さを取得し、 ImageCopyResampled()関数を使用して指定された200x150サイズにスケーリングします。最後に、 ImagePng()を介してスケーリングされた画像を出力します。

3.2画像トリミング

画像から部品をトリミングしたい場合は、幅と高さに基づいて対応する操作を実行することもできます。

 <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">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-string">'path/to/your/image.png'</span></span><span>);

</span><span><span class="hljs-comment">// 画像の幅を取得します和高度</span></span><span>
</span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesx</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-variable">$height</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesy</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-variable">$x</span></span><span> = </span><span><span class="hljs-number">50</span></span><span>; </span><span><span class="hljs-comment">// 水平軸を開始します</span></span><span>
</span><span><span class="hljs-variable">$y</span></span><span> = </span><span><span class="hljs-number">50</span></span><span>; </span><span><span class="hljs-comment">// 垂直座標を開始します</span></span><span>
</span><span><span class="hljs-variable">$crop_width</span></span><span> = </span><span><span class="hljs-number">100</span></span><span>;
</span><span><span class="hljs-variable">$crop_height</span></span><span> = </span><span><span class="hljs-number">100</span></span><span>;

</span><span><span class="hljs-comment">// 新しい空白の画像を作成します</span></span><span>
</span><span><span class="hljs-variable">$cropped_image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-variable">$crop_width</span></span><span>, </span><span><span class="hljs-variable">$crop_height</span></span><span>);

</span><span><span class="hljs-comment">// 使用 imagecopy() 切断を実行します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagecopy</span></span><span>(</span><span><span class="hljs-variable">$cropped_image</span></span><span>, </span><span><span class="hljs-variable">$image</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">$x</span></span><span>, </span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-variable">$crop_width</span></span><span>, </span><span><span class="hljs-variable">$crop_height</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-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$cropped_image</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-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$cropped_image</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

この例では、座標(50、50)から始まる100x100のサイズの画像から面積をトリミングし、トリミングされた画像を出力します。

要約します

ImageCreateFrommpng()を使用して画像ファイルをロードした後、画像の幅と高さを取得することは、画像処理の基本的な要件です。 Imagesx()Imagesy()関数を介して画像の幅と高さを直接取得するか、 getImagesize()を使用して画像に関する詳細情報を取得できます。画像処理の実際のアプリケーションでは、幅と高さの値を使用して、サイズ、作物の画像、およびその他の操作を調整して、望ましい効果を達成します。

上記は、PNG画像を処理する際の幅と高さを読むための基本的な方法と手法です。これらの機能を理解した後、PHPで画像処理をより適切に実行できます。