當前位置: 首頁> 最新文章列表> 使用imagecreatefrompng()時,怎樣讀取或處理圖像的寬度和高度?

使用imagecreatefrompng()時,怎樣讀取或處理圖像的寬度和高度?

M66 2025-06-28

在PHP 中, imagecreatefrompng()函數是用於創建一個圖像資源(GD 圖像資源)從PNG 格式的圖像文件。這個函數對於處理圖像文件非常常見,尤其是在涉及動態圖像生成、圖像處理或圖像編輯時。但是,很多開發者在使用imagecreatefrompng()創建圖像資源之後,往往需要獲取圖像的寬度和高度來做進一步處理。

本文將詳細介紹如何在使用imagecreatefrompng()函數時,讀取和處理圖像的寬度和高度。

1. 使用imagesx()imagesy()函數獲取圖像寬度和高度

PHP 提供了imagesx()imagesy()這兩個函數來獲取圖像資源的寬度和高度。通過這兩個函數,我們可以在調用imagecreatefrompng()創建圖像資源後,獲取該圖像的具體尺寸。

示例代碼:

 <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>

在這個示例中,首先使用imagecreatefrompng()函數加載圖像文件,然後通過imagesx()獲取圖像的寬度,通過imagesy()獲取圖像的高度。最後,將圖像的寬度和高度輸出到瀏覽器。

2. 結合getimagesize()獲取圖像寬高

除了使用imagesx()imagesy()外,我們還可以使用getimagesize()函數來獲取圖像的寬度和高度。 getimagesize()不僅返回圖像的尺寸,還會返回更多的圖像信息,包括圖像的MIME 類型等。這對於需要處理文件信息的場景非常有用。

示例代碼:

 <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] )是圖像的寬度,第二個元素( $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 的區域,並將裁剪後的圖像輸出。

總結

使用imagecreatefrompng()加載圖像文件後,獲取圖像的寬度和高度是圖像處理中的基本需求。我們可以通過imagesx()imagesy()函數直接獲取圖像的寬高,或者使用getimagesize()獲取圖像的更多信息。在圖像處理的實際應用中,寬高值常常用於調整尺寸、裁剪圖像等操作,從而達到所需的效果。

以上是處理PNG 圖像時讀取寬度和高度的基本方法和技巧,了解這些函數後,你可以在PHP 中更好地進行圖像處理。