首頁 後端開發 php教程 php等比縮放圖片

php等比縮放圖片

Jul 28, 2016 am 08:26 AM
break NIM param

步驟如下:
1.取得圖片的基本資訊
用這個getimagesize函數

2.判斷圖片資源類型並建立對應圖片資源
用這個getPicType函數(自訂函數)

3.計算縮放比例
原則是取最小的縮放係數.例如:800*600的圖片,縮放到200*200以下,則縮放係數為scale=200/800>200/600?200/600:200/800; 因為1/4

4.計算縮放後的尺寸
wdith = floor(800*1/4);向下取整
height = floor(600*1/4);
結果縮放後的圖片變成200*150

5.建立目標影像資源
用這個imagecreatetruecolor函數,創建一個真彩的圖像

6.等比縮放
用這個imagecopyresampled函數實現縮放

7.輸出圖像
用這個outputImage函數(自訂函數)

8.釋放圖片資源
用這個imagedestroy函數

縮放前後如圖:
750*525
 php等比缩放图片
200*140
 php等比缩放图片

程式碼如下:

<code><span>/**
 *<span> @function</span> 等比缩放函数(以保存的方式实现)
 *<span> @param</span> string $picname 被缩放的处理图片源
 *<span> @param</span> int $maxX 缩放后图片的最大宽度
 *<span> @param</span> int $maxY 缩放后图片的最大高度
 *<span> @param</span> string $pre 缩放后图片名的前缀名
 *<span> @return</span> string 返回后的图片名称(带路径),如a.jpg --> s_a.jpg
 */</span><span><span>function</span><span>scalePic</span><span>(<span>$picname</span>,<span>$maxX</span>=<span>100</span>,<span>$maxY</span>=<span>100</span>,<span>$pre</span>=<span>'s_'</span>)</span>
{</span><span>$info</span> = getimagesize(<span>$picname</span>); <span>//获取图片的基本信息</span><span>$width</span> = <span>$info</span>[<span>0</span>];<span>//获取宽度</span><span>$height</span> = <span>$info</span>[<span>1</span>];<span>//获取高度</span><span>//判断图片资源类型并创建对应图片资源</span><span>$im</span> = getPicType(<span>$info</span>[<span>2</span>],<span>$picname</span>);
    <span>//计算缩放比例</span><span>$scale</span> = (<span>$maxX</span>/<span>$width</span>)>(<span>$maxY</span>/<span>$height</span>)?<span>$maxY</span>/<span>$height</span>:<span>$maxX</span>/<span>$width</span>;
    <span>//计算缩放后的尺寸</span><span>$sWidth</span> = floor(<span>$width</span>*<span>$scale</span>);
    <span>$sHeight</span> = floor(<span>$height</span>*<span>$scale</span>);
    <span>//创建目标图像资源</span><span>$nim</span> = imagecreatetruecolor(<span>$sWidth</span>,<span>$sHeight</span>);
    <span>//等比缩放</span>
    imagecopyresampled(<span>$nim</span>,<span>$im</span>,<span>0</span>,<span>0</span>,<span>0</span>,<span>0</span>,<span>$sWidth</span>,<span>$sHeight</span>,<span>$width</span>,<span>$height</span>);
    <span>//输出图像</span><span>$newPicName</span> = outputImage(<span>$picname</span>,<span>$pre</span>,<span>$nim</span>);
    <span>//释放图片资源</span>
    imagedestroy(<span>$im</span>);
    imagedestroy(<span>$nim</span>);
    <span>return</span><span>$newPicName</span>;
}

<span>/**
 * function 判断并返回图片的类型(以资源方式返回)
 *<span> @param</span> int $type 图片类型
 *<span> @param</span> string $picname 图片名字
 *<span> @return</span> 返回对应图片资源
 */</span><span><span>function</span><span>getPicType</span><span>(<span>$type</span>,<span>$picname</span>)</span>
{</span><span>$im</span>=<span>null</span>;
    <span>switch</span>(<span>$type</span>)
    {
        <span>case</span><span>1</span>:  <span>//GIF</span><span>$im</span> = imagecreatefromgif(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>2</span>:  <span>//JPG</span><span>$im</span> = imagecreatefromjpeg(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>3</span>:  <span>//PNG</span><span>$im</span> = imagecreatefrompng(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>4</span>:  <span>//BMP</span><span>$im</span> = imagecreatefromwbmp(<span>$picname</span>);
            <span>break</span>;
        <span>default</span>:
            <span>die</span>(<span>"不认识图片类型"</span>);
            <span>break</span>;
    }
    <span>return</span><span>$im</span>;
}

<span>/**
 * function 输出图像
 *<span> @param</span> string $picname 图片名字
 *<span> @param</span> string $pre 新图片名前缀
 *<span> @param</span> resourse $nim 要输出的图像资源
 *<span> @return</span> 返回新的图片名
 */</span><span><span>function</span><span>outputImage</span><span>(<span>$picname</span>,<span>$pre</span>,<span>$nim</span>)</span>
{</span><span>$info</span> = getimagesize(<span>$picname</span>);
    <span>$picInfo</span> = pathInfo(<span>$picname</span>);
    <span>$newPicName</span> = <span>$picInfo</span>[<span>'dirname'</span>].<span>'/'</span>.<span>$pre</span>.<span>$picInfo</span>[<span>'basename'</span>];<span>//输出文件的路径</span><span>switch</span>(<span>$info</span>[<span>2</span>])
    {
        <span>case</span><span>1</span>:
            imagegif(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>2</span>:
            imagejpeg(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>3</span>:
            imagepng(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>4</span>:
            imagewbmp(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
    }
    <span>return</span><span>$newPicName</span>;
}</code>
登入後複製
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介紹了 php等比縮放圖片,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

「AI 工廠」將推動軟體全端重塑,英偉達提供 Llama3 NIM 容器供用戶部署 「AI 工廠」將推動軟體全端重塑,英偉達提供 Llama3 NIM 容器供用戶部署 Jun 08, 2024 pm 07:25 PM

本站6月2日消息,在目前正在進行的黃仁勳2024台北電腦展主題演講上,黃仁勳介紹生成式人工智慧將推動軟體全端重塑,展示其NIM(NvidiaInferenceMicroservices)雲端原生微服務。英偉達認為「AI工廠」將掀起一場新產業革命:以微軟開創的軟體產業為例,黃仁勳認為生成式人工智慧將推動其全端重塑。為方便各種規模的企業部署AI服務,英偉達今年3月推出了NIM(NvidiaInferenceMicroservices)雲端原生微服務。 NIM+是一套經過優化的雲端原生微服務,旨在縮短上市時間

php裡面break的用法是什麼 php裡面break的用法是什麼 Jan 31, 2023 pm 07:33 PM

在php中,break用來跳出目前的語法結構,執行下面的語句;可以在switch、for、while和do while等語句中使用,可以終止循環體的程式碼並立即跳出目前的循環,執行循環之後的代碼。 break語句可以帶一個參數n,表示跳出循環的層數,如果要跳出多重循環的話,可以用n來表示跳出的層數,如果不帶參數預設是跳出本重循環。

聊聊PHP switch語句中不使用break的情況 聊聊PHP switch語句中不使用break的情況 Mar 20, 2023 pm 04:55 PM

在PHP中使用switch語句來進行多個分支的選擇是很常見的,通常在每個分支結束後會使用break語句來退出switch語句。然而,有些情況下我們不想使用break語句,本文將介紹在PHP switch語句中不使用break的情況。

JS循環學習:跳出迴圈語句break和continue JS循環學習:跳出迴圈語句break和continue Aug 03, 2022 pm 07:08 PM

在之前的文章中,我們帶大家學習了JS中的幾種循環控制結構(while和do-while循環、for循環),下面聊聊跳出循環語句break和continue,希望對大家有所幫助!

Java中的break關鍵字的作用是什麼? Java中的break關鍵字的作用是什麼? Apr 23, 2023 am 10:13 AM

說明1.break的作用是跳出現在的循環塊(for、while、dowhile)或程式塊(switch)。 2.循環塊的作用是跳出現在循環中的循環體。程式區塊中的作用是中斷和下一個case條件的比較。在switch語句中使用break,終止switch語句。當break用於循環時,跳出循環。在其他地方使用break是沒有意義的。實例intsum=0;inti;for(i=1;i

Go語言break停止語句有什麼用 Go語言break停止語句有什麼用 Jan 18, 2023 pm 03:46 PM

在Go語言中,break停止語句用於循環語句中跳出循環,並開始執行循環之後的語句。 break語句可以結束for、switch和select的程式碼區塊,另外break語句也可以在語句後面加上標籤,表示退出某個標籤對應的程式碼區塊,標籤要求必須定義在對應的for、switch和select的程式碼區塊上。

linux param是什麼 linux param是什麼 Mar 10, 2023 am 08:58 AM

linux param指的是“module_param”函數,其作用是傳遞命令列參數;在用戶態下編程可以透過“main()”的參數來傳遞命令列參數,而編寫一個核心模組則透過“module_param()”來傳遞參數。

PHP中break語句的作用及注意事項 PHP中break語句的作用及注意事項 Mar 20, 2024 pm 05:33 PM

PHP中break語句的作用及注意事項在PHP程式設計中,break語句是一種控制語句,用來中斷迴圈或switch語句的執行。 break語句能夠立即跳出目前所處的迴圈或switch語句,使程式執行流程直接跳到迴圈或switch語句後的程式碼部分,進而提高程式執行的效率和彈性。在實際程式設計中,break語句有重要的作用,但同時也需要注意一些細節和注意事項。一、b

See all articles