php等比縮放圖片
步驟如下:
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
200*140
程式碼如下:
<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>
以上就介紹了 php等比縮放圖片,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

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

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

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

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

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

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