跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

PHP中改变图片的尺寸大小的代码

改变图片的尺寸是一个很常见的功能需求,下面开始研究下关于PHP改变图片尺寸的方法。

先介绍一个自己写的函数。

代码如下:php imagecopyresampled imagecopyresampled -- 重采样拷贝部分图像并调整大小。

int imagecopyresampled ( resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH) imagecopyresampled() 将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。dst_im 和 src_im 分别是目标图像和源图像的标识符。如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸。坐标指的是左上角。本函数可用来在同一幅图内部拷贝(如果 dst_im 和 src_im 相同的话)区域,但如果区域交迭的话则结果不可预知。

注: 因为调色板图像限制(255+1 种颜色)有个问题。重采样或过滤图像通常需要多于 255 种颜色,计算新的被重采样的像素及其颜色时采用了一种近似值。对调色板图像尝试分配一个新颜色时,如果失败我们选择了计算结果最接近(理论上)的颜色。这并不总是视觉上最接近的颜色。这可能会产生怪异的结果,例如空白(或者视觉上是空白)的图像。要跳过这个问题,请使用真彩色图像作为目标图像,例如用 imagecreatetruecolor() 创建的。

注: imagecopyresampled() 需要 GD 2.0.l 或更高版本。

一个简单的示例:

代码如下:php

示例2:

代码如下:php
$ratio_orig) {$width = $height*$ratio_orig;} else {$height = $width/$ratio_orig;}// Resample$image_p = imagecreatetruecolor($width, $height);$image = imagecreatefromjpeg($filename);imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);// Output imagejpeg($image_p, null, 100);?>

有两种改变图像大小的方法:

ImageCopyResized() 函数在所有GD版本中有效,但其缩放图像的算法比较粗糙。

ImageCopyResamples(),其像素插值算法得到的图像边缘比较平滑。(但该函数的速度比 ImageCopyResized() 慢)。

两个函数的参数是一样的,如下:代码如下:imageCopyResampled(dest,src,dy,dx,sx,sy,dw,dh,sw,sh);imageCopyResized(dest,src,dy,dx,sx,sy,dw,dh,sw,sh);

例子:

代码如下:PHP 在php中如何改变jpg图像文件的尺寸大小代码如下:function resize_jpg($img,$w,$h){// $thumb = imagecreate ($w, $h);$image = imagecreatefromjpeg($img);$imagedata = getimagesize($img);if ($h = "auto") $h = $w/($imagedata[0]/$imagedata[1]);//根据原图的纵横比得出高度!

$thumb = imagecreatetruecolor ($w, $h);imagecopyresized ($thumb, $image, 0, 0, 0, 0, $w, $h, $imagedata[0], $imagedata[1]);imagejpeg($thumb);}//resize_jpg($file,$w,$h);resize_jpg("images/dsc01241244.jpg",100,100);imagedestory($thumb);imagedestory($image);?>

函数代码:

代码如下:php

相关文章