首先,我們需要明確imagecopyresampled函數的使用方法。它的語法如下:
imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
其中,$dst_image是目標圖像(生成的圖像),$src_image是源圖像(將被復制和調整大小的圖像)。$dst_x和$dst_y指定了目標圖像的起始坐標。$src_x和$src_y指定了源圖像的起始坐標。$dst_w和$dst_h分別指定了目標圖像的寬度和高度,$src_w和$src_h分別指定了源圖像的寬度和高度。
為了方便,我們來看一個簡單的例子。在這個例子中,我們有一張風景圖片,我們要將它縮小,并將它放到一個新的圖像中。我們將使用imagecopyresampled函數來操作這個過程。代碼如下所示:
<?php // 載入原始圖像 $src_image = imagecreatefromjpeg('landscape.jpg'); // 創建目標圖像 $dst_image = imagecreatetruecolor(300, 200); // 復制并調整大小 imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, 300, 200, imagesx($src_image), imagesy($src_image)); // 輸出圖像 header('Content-Type: image/jpeg'); imagejpeg($dst_image); imagedestroy($src_image); imagedestroy($dst_image); ?>
在這個例子中,我們首先使用imagecreatefromjpeg函數載入了一張名為landscape.jpg的圖像,然后創建了一個大小為300x200的目標圖像。接著,我們使用imagecopyresampled函數將原始圖像復制到目標圖像中,并同時調整了它的大小。最后,我們將生成的圖像輸出到瀏覽器,并釋放了所有圖像資源。
除了改變圖像大小外,我們還可以使用imagecopyresampled函數來實現一些有趣的效果。例如,我們可以將一張照片旋轉90度,然后顯示出來。以下是實現這個效果的代碼:
<?php // 載入原始圖像 $src_image = imagecreatefromjpeg('photo.jpg'); // 創建目標圖像 $dst_image = imagecreatetruecolor(imagesy($src_image), imagesx($src_image)); // 復制并旋轉圖像 imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, imagesy($src_image), imagesx($src_image), imagesx($src_image), imagesy($src_image)); $dst_image = imagerotate($dst_image, -90, 0); // 輸出圖像 header('Content-Type: image/jpeg'); imagejpeg($dst_image); imagedestroy($src_image); imagedestroy($dst_image); ?>
與之前的例子類似,我們首先載入了一張名為photo.jpg的圖像,然后創建了一個與之前大小不同的目標圖像。在使用imagecopyresampled函數復制和旋轉圖像之后,我們使用了imagerotate函數將圖像旋轉了90度。最后,我們將生成的圖像輸出到瀏覽器,并釋放了所有圖像資源。
總結起來,imagecopyresampled函數是一個非常實用的PHP圖像處理函數。無論是改變圖像大小,還是旋轉圖像,這個函數都可以幫助我們輕松達成。使用這個函數,我們可以創造出許多想象不到的效果,讓圖像處理變得更加有趣。