php等比例压缩图片

黑灯舞 4年前

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等比例压缩图片【原创】