首頁 後端開發 php教程 PHP 裁剪圖片成固定大小代碼方法

PHP 裁剪圖片成固定大小代碼方法

Jul 29, 2016 am 08:40 AM
img new

做一個首頁調用圖像,有時往往需要獲得固定大小的圖像,因為首頁的圖像位置通常由設計人員指定好了,如果是做最新發布圖像調用,因為不知道客戶會上傳什麼比例的圖像,所以,有時候也就沒有辦法確定圖像的比例,前台頁面編寫人員通常會採用固定img 元素高寬的辦法來達到控制圖像不溢出,但如果圖像的比例不是需要的比例,就會造成圖像調用後變形,很大程度上影響了頁面的美觀,有解決的方法是,按照原圖比例進行縮放,縮放後的圖像難免會有空白,空白處填以顏色,這樣雖然圖像不變形了,但這樣會有很多問題,例如,如果使用者發送一個圖像很高但寬度一般的圖像,如果壓縮成一個1:1的圖像,那麼壓縮後基本上就會看不到圖像了。
我這裡的解決辦法是,任意圖像裁剪成固定大小,圖像不變形,空白處拉伸填充,圖像始終鋪滿,不留空白,用過bcastr的朋友應該知道,bcastr就是保證了圖像調用的不變形,對一個固定大小輸出的圖像框,源圖有以下幾種情況:
1:需要輸出的圖像的高寬比源圖的高寬都小,寫成判斷$new_width2:需要輸出的圖像的高寬比原圖的高寬都大,寫成判斷$new_width>$src_width && $new_height>$src_width
3:排除第1,2兩種,即一邊放大,一邊縮小的情況加上等於的判斷
對於1,2,函數處理程式碼完全相同,所以可以歸納成一個處理語句
給出php實作程式碼

複製程式碼 程式碼如下:


/*
*說明:函數功能是將一個影像裁切為任意大小的影像,影像不變形
* 參數說明:輸入需要處理圖片的檔案名,產生新圖片的儲存檔名,產生新圖片的寬,產生新圖片的高
* written by smallchicken
* time 2008-12-18
*/
// 取得任意大小影像,不足地方拉伸,不產生變形,不留下空白
function my_image_resize($src_file, $dst_file , $new_width , $new_height) {
if($new_width echo "params width or height error !";
exit();
}
if(!file_exists($src_file)) {
echo $src_file . " is not exists files . ";
exit();
}
// 映像型別
$type=exif_imagetype($src_file);
$support_type=array(IMAGETYPE_JPEG , IMAGETYPE_PNG_TYPE_PNG_TY; if(!in_array($type, $support_type,true)) {
echo "this type of image does not support! only support jpg , gif or png";
exit();
}
}
exit();
}
}
exit();
}
}
exit();
}
}
exit();
}
}
exit(); >//Load image
switch($type) {
case IMAGETYPE_JPEG :
$src_img=imagecreatefromjpeg($src_file);
break; case IMAGETY ($src_file);
break;
case IMAGETYPE_GIF :
$src_img=imagecreatefromgif($src_file);
break;
default:
echoor! 🎜>exit();
}
$w=imagesx($src_img);
$h=imagesy($src_img);
$ratio_w=1.0 * $new_width / $w;🎜>$ratio_w=1.0 * $new_width / $w; >$ratio_h=1.0 * $new_height / $h;
$ratio=1.0;
// 產生的影像的高寬比原來的都小,或都大,原則是取大比例放大,取大比例縮小(縮小的比例就比較小了)
if( ($ratio_w 1 && $ratio_h > 1)) {
if($ratio_w $ratio = $ratio_h ; // 情況一,寬度的比例比高度方向的小,按照高度的比例標準來裁剪或放大
}else {
$ratio = $ratio_w ;
}
// 定義一個中間的暫存影像,該影像的寬高比剛好滿足目標要求
$inter_w=(int)($new_width / $ratio);
$inter_h= (int) ($new_height / $ratio);
$inter_img=imagecreatetruecolor($inter_w , $inter_h);
imagecopy($inter_img, $src_img, 0,0,0,0,$inter_w,$inter_h_w );
// 產生一個以最大邊長度為大小的是目標圖像$ratio比例的臨時圖像
// 定義一個新的圖像
$new_img=imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($new_img,$inter_img,0,0,0,0,$new_width,$new_height,$inter_w,$inter_h);
switch($type) {
case IMAGETYPE_PEG :
。 :
imagegif($new_img,$dst_file,100);
break;
default:
break;
}
} // end if 1
// 2 目標影像的一邊大於原圖,一邊小於原圖,先放大平普影像,再裁切
// =if( ($ratio_w 1) || ($ratio_w >1 && $ ratio_h else{
$ratio=$ratio_h>$ratio_w? $ratio_h : $ratio_w; //取比例大的那個值
// 定義一個中間的大圖像,該圖像的高或寬和目標圖像相等,然後對原圖放大
$inter_w=(int)($w * $ratio);
$inter_h=(int) ($h * $ratio);
$inter_img=imagecreatetruecolor($inter_w , $inter_h);
//將原圖縮放比例後裁剪
imagecopyresampled($inter_img,$src_img,0,0,0,0,$inter_w,$inter_h, $w,$h);
// 定義一個新的映像
$new_img=imagecreatetruecolor($new_width,$new_height);
imagecopy($new_img, $inter_img, 0,0,0,0 ,$new_width,$new_height);
switch($type) {
case IMAGETYPE_JPEG :
imagejpeg($new_img, $dst_file,100); // 儲存映像
break; IMAGETYPE_PNG :
imagepng($new_img,$dst_file,100);
break;
case IMAGETYPE_GIF :
imagegif($new_img,$dst_break,100); :
break;
}
}// if3
}// end function
?>

以上就介紹了 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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1248
24
img檔案怎麼打開 img檔案怎麼打開 Sep 18, 2023 am 09:40 AM

開啟img檔案的方法有使用虛擬光碟機軟體開啟、使用壓縮軟體開啟和使用專用工具開啟。詳細介紹:1、使用虛擬光碟機軟體打開,下載並安裝一個虛擬光碟機軟體,右鍵單擊img文件,選擇“打開方式”或“關聯程序”,在彈出的對話框中選擇安裝的虛擬光驅軟體,虛擬光碟機軟體會自動載入img文件,並將其作為虛擬光碟機中的光碟映像,雙擊虛擬光碟機中的光碟圖標,即可開啟img檔案並存取其中的內容等等。

img檔案如何開啟 img檔案如何開啟 Jul 06, 2023 pm 04:17 PM

img檔案開啟的方式:1、確認img檔案路徑;2、使用img檔案開啟器;3、選擇開啟方式;4、檢視圖片;5、儲存圖片。 img檔案是一種常用的圖像檔案格式,通常用於儲存圖片資料。

img是什麼格式 img是什麼格式 Mar 17, 2023 am 10:33 AM

img是一種文件壓縮格式,主要是為了創建軟碟的鏡像文件,它可以用來壓縮整個軟碟或整片光碟的內容;使用“.IMG”這個擴展名的文件就是利用這種文件格式來創建的;img檔案包括3個基本節點,分別是「Ehfa_HeaderTag」、「Ehfa_File」和「Ehfa_Entry」。

jquery怎麼改變img的src屬性 jquery怎麼改變img的src屬性 Mar 03, 2022 pm 03:41 PM

jquery改變img src屬性的方法:1、使用attr()屬性,語法「$("img").attr("src","圖片檔案的位址")」;2、使用prop()方法,語法「 $("img").prop("src","圖片檔案的位址")」。

u盤pe讀不出img u盤pe讀不出img Mar 19, 2024 pm 12:07 PM

光碟是常用到的儲存設備之一,那在使用過程中也會出現一些小問題,例如:U盤讀不出,那該怎麼解決呢?收好! u盤讀不出來? 4步驟教你輕鬆解決在U盤已經插到電腦的基礎上點擊開始選單,選中控制面板收好! u盤讀不出來? 4步驟教你輕鬆解決在控制面板裡找到並雙擊裝置管理員。收好! u盤讀不出來? 4步驟教你輕鬆解決在裝置管理員的主介面找到通用序列匯流排控制器收好! u盤讀不出來? 4步驟教你輕鬆解決找到usb大容量儲存設備,勾選它點擊右鍵找到卸載收好! u盤讀不出來? 4步驟教你輕鬆解決歡迎留言討論喲!

go語言中make和new的差別是什麼 go語言中make和new的差別是什麼 Jan 09, 2023 am 11:44 AM

區別:1、make只能用來分配及初始化類型為slice、map、chan的資料;而new可以分配任意類型的資料。 2.new分配返回的是指針,即類型「*Type」;而make返回引用,即Type。 3.new分配的空間會被清除;make分配空間後,會初始化。

java中的new關鍵字怎麼用 java中的new關鍵字怎麼用 May 03, 2023 pm 10:16 PM

1.概念在Java語言裡,「new」表達式是負責建立實例的,其中會呼叫構造器去對實例做初始化;構造器本身的回傳值類型是void,並不是「建構器回傳了新建立的物件的參考”,而是new表達式的值是新建立的物件的參考。 2.用途新建類別的物件3.工作機制為物件成員分配記憶體空間,並指定預設值對成員變數進行明確初始化執行建構方法計算並傳回參考值4.實例new操作往往意味著記憶體中的開啟新的記憶體空間,這個記憶體空間分配在記憶體中的堆區,受到jvm控制,自動進行記憶體管理。這裡我們就是用String這個類別來舉例說明。 pu

在html中圖像標籤是什麼意思 在html中圖像標籤是什麼意思 Mar 04, 2021 pm 02:37 PM

在html中,圖像標籤是指用於定義圖像的標籤,即“<img>”標籤。 img元素可以在網頁中嵌入一幅圖像,「<img>」標籤的作用是為被引用的圖像建立佔位符,將圖像連結到HTML頁面上;img標籤使用src屬性來規定顯示圖像的URL,語法“<img src="圖像url">”。

See all articles