首頁 > 後端開發 > PHP問題 > php能實現旋轉圖片嗎

php能實現旋轉圖片嗎

藏色散人
發布: 2023-03-05 17:04:02
原創
2831 人瀏覽過

php能旋轉圖片,其實作方法為:先建立影像資源;然後使用「imagerotate()」函數以指定的角度旋轉;最後透過「$imagejpeg($rotate,$filename);」語句儲存旋轉後的圖片即可。

php能實現旋轉圖片嗎

推薦:《PHP影片教學

php能旋轉圖片,其實現方法是:

PHP圖片處理之圖片旋轉和圖片翻轉使用imagerotate函數實現,自訂了多個函數來實現功能需求.

圖片的旋轉是按特定的角度來轉動圖片,圖片的翻轉則是將圖片的內容按特定的方向對調。

圖片翻轉需要自己寫函數來實現,而旋轉圖片則可以直接藉助GD庫中提供的imagerotate()函數完成。

imagerotate()函數的原型如下所示:

resource  imagerotate(resource src_im ,    floatangle,    int bgd_color    [,intignore_transpatrent])
登入後複製

該函數可以將src_im圖像用給定的角度旋轉,bgd_color指定了旋轉後沒有覆蓋到的部分的顏色。旋轉的中心是影像的中心,旋轉後的影像會按比例縮小以適合目標影像的大小(邊緣不會被剪下)。如果ignore_transpatrent被設為非零值,則透明色會被忽略(否則會被保留)。以下以JPEG格式的圖片為例,宣告一個可以旋轉圖片的函數rotate(),程式碼如下所示:

<?php
    //用给定角度旋转图像,以jpeg图像格式为例
    function rotate($filename,$degrees){
        //创建图像资源,以jpeg格式为例
        $source =imagecreatefromjpeg($filename);
        //使用imagerotate()函数按指定的角度旋转
        $rotate = imagerotate($source,$degrees, 0);
        //旋转后的图片保存
        $imagejpeg($rotate,$filename);
    }
 
    //把一幅图像brophp.jpg旋转180度
    rotate("brophp", 180);
?>
登入後複製

圖片翻轉只能設定沿著Y軸水平翻轉或沿著X軸垂直翻轉。如果是沿著Y軸翻轉,就是將原圖從右向左(或從做向右)按一個像素寬度,以圖片自身高度循環複製到新資源中,保存的新資源就是沿Y軸翻轉後的圖片。以JPEG格式圖片為例,宣告一個可以沿著Y軸翻轉的圖片函數turn_y()程式碼如下所示:

程式碼如下:

<?php
    function trun_y($filename){
        $back =imagecreatefromjpeg($filename);
 
        $width = imagesx($back);
        $height = imagesy($back);
 
        //创建一个新的图片资源,用来保存沿Y轴翻转后的图片
        $new =imagecreatetruecolor($width, $height);
        //沿y轴翻转就是将原图从右向左按一个像素宽度向新资源中逐个复制
        for($x=0 ;$x<$width; $x++){
            //逐条复制图片本身高度,1个像素宽度的图片到新资源中
            imagecopy($new,$back, $width-$x-1, 0, $x, 0, 1, $height);
        }
 
        //保存翻转后的图片
        imagejpeg($new,$filename);
        imagedestroy($back);
        imagedestroy($new);
    }
 
    trun_y("brophp.jpg")
?>
登入後複製

本例宣告的turn_y()函數只需要一個參數,就是要處理的圖片URL。本範例呼叫turn_y()函數將圖片沿著Y軸進行翻轉。如果是沿著X軸翻轉,就是將原圖從上方向下(或從下方往上)旋轉,程式碼如下所示:

程式碼如下:

<?php
    function trun_x($filename){
        $back = imagecreatefromjpeg($filename);
 
        $width = imagesx($back);
        $height = imagesy($back);
 
        //创建一个新的图片资源,用来保存沿Y轴翻转后的图片
        $new =imagecreatetruecolor($width, $height);
        //沿y轴翻转就是将原图从右向左按一个像素宽度向新资源中逐个复制
        for($y=0 ;$y<$height; $y++){
            //逐条复制图片本身高度,1个像素宽度的图片到薪资源中
            imagecopy($new,$back,0, $height-$y-1, 0, $y, $width,1);
        }
 
        //保存翻转后的图片
        imagejpeg($new,$filename);
        imagedestroy($back);
        imagedestroy($new);
    }
 
    trun_x("brophp.jpg")
?>
登入後複製

註: 

imagecopy ( resource $src_im , int $dst_x , int $dst_y , int$src_x , int $src_y , int $dst_y , int$src_x , int $src_y , int $intsrc_w , int $ src_h )

將src_im 影像中座標從src_x,src_y 開始,寬度為src_w,高度為src_h 的一部分拷貝到dst_im 影像中座標為dst_x 和dst_y 的位置上。

以上是php能實現旋轉圖片嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板