php等比例壓縮圖片

黑燈舞 9年前發布 | 43K 次閱讀 PHP 圖形/圖像處理

pathinfo(path,options)

以數組的形式返回文件路徑的信息

參數:path 文件路徑

options 可選。規定要返回的數組元素。默認是 all。

可能的值:

PATHINFO_DIRNAME – 只返回 dirname 目錄名

PATHINFO_BASENAME – 只返回 basename 文件基本名

PATHINFO_EXTENSION – 只返回 extension 文件擴展名

getimagesize(filename)

函數getimagesize返回一個具有四個單元的數組。

索引 0 包含圖像寬度的像素值,

索引 1 包含圖像高度的像素值。

索引 2 是圖像類型的標記:

1 = GIF, 2 = JPG, 3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。

索引 3 是文本字符串,內容為“height=”yyy” width=”xxx””,可直接用于 IMG 標記。

索引 bits 顏色分量的值 8bit,有2^8=256個值

imagecreatetruecolor(int x,int y)

返回一個圖像標識符:建立的是一幅大小為 x和 y的黑色圖像

imagecreatefromgif imagecreatefromgif imagecreatefrompng(file)

返回圖像標識符

imagecopyresampled

將一幅圖像中的一塊矩形區域拷貝到另一個圖像中,平滑地插入像素值,因此,尤其是,減小了圖像的大小而仍然保持了極大的清晰度

imagecopyresampled ( resource $dst_image , resource $src_image, int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int$dst_h , int $src_w , int $src_h )

dst_image

目標圖象連接資源。

src_image

源圖象連接資源。

dst_x

目標 X 坐標點

dst_y

目標 Y 坐標點。

src_x

源的 X 坐標點。

src_y

源的 Y 坐標點。

dst_w

目標寬度。

dst_h

目標高度。

src_w

源圖象的寬度。

src_h

源圖象的高度

imagejpeg

以 JPEG 格式將圖像輸出到瀏覽器或文件

( resource image , string filename , int quality)

resource image:要輸出的圖像

filename 輸出的目錄位置

quality 圖片的質量0-100選擇

imagedestroy(image)

釋放與 image 關聯的內存。image 是由圖像創建函數返回的圖像標識符

操作前文件夾截圖

qq截圖20141127230153.pnggirl-300x290.png

操作后文件夾截圖

qq截圖20141127230238.pngphone_girl.jpg

最后貼代碼和注釋

<?php
$src="oldimg/girl.png";//圖片路徑
function resize($src) {
$temp=pathinfo($src);
var_dump($temp);
// array (size=4)
// 'dirname' => string 'oldimg' (length=6)
// 'basename' => string 'girl.png' (length=8)
// 'extension' => string 'png' (length=3)
// 'filename' => string 'girl' (length=4)

$name=$temp["basename"];//文件基本名
$dir=$temp["dirname"];//文件所在的文件夾
$extension=$temp["extension"];//文件擴展名
$savepath="{$dir}/../newimg/phone_{$name}";//縮略圖保存路徑

//獲取圖片的基本信息
$info=getimagesize($src);
var_dump($info);
// array (size=6)
// 0 => int 327
// 1 => int 317
// 2 => int 3
// 3 => string 'width="327" height="317"' (length=24)
// 'bits' => int 8
// 'mime' => string 'image/png' (length=9)

$width=$info[0];//獲取圖片寬度
$height=$info[1];//獲取圖片高度
$w = 40;//壓縮后圖片的寬度
$h = intval(40 * $height / $width);//等比縮放圖片高度 變整型

$temp_img=imagecreatetruecolor($w,$h);//創建畫布
$im=create($src);
imagecopyresampled($temp_img,$im,0,0,0,0,$w,$h,$width,$height);//將圖片復制到畫布中

imagejpeg($temp_img,$savepath, 100);
imagedestroy($im);

return $savepath;
}

/**
* 創建圖片,返回資源類型
* @param string $src 圖片路徑
* @return resource $im 返回資源類型
* **/
function create($src) {
$info=getimagesize($src);
switch ($info[2]) {
case 1:
$im=imagecreatefromgif($src);
break;
case 2:
$im=imagecreatefromgif($src);
break;
case 3:
$im=imagecreatefrompng($src);
break;
}
return $im;
}
$a=resize($src);
echo $a;

轉載請注明:中夢科技博客 ? php等比例壓縮圖片【原創】

 本文由用戶 黑燈舞 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!