失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PHP中改变图片的尺寸大小的代码

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

时间:2021-08-14 21:56:40

相关推荐

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

php教程|php手册

图片,尺寸大小

php教程-php手册

asp简单在线系统源码,vscode大纲加载太慢,ubuntu的d,idae中tomcat,sqlite设置id自增,前端如何获取框架的绝对路径,怀孕梦到小龙虾满地爬虫,php 企业门户,文章seo写作模版, 登录网站,棋牌网页游戏源码下载,杰奇模板下载lzw

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

php电影网站源码程序(带采集),vscode提示编译错误,aws ubuntu账号,jar包放在tomcat,利用爬虫代理,最好的php开发工具,惠州seo网络营销推广方案,ASP做旅游网站代码,模板默认风格lzw

美女图片站整站程序源码下载,ubuntu强制安装依赖,tomcat8.5安装配置详解,python爬虫存库,php创建数据库及表,济南seo服lzw

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

代码如下:

<?php

$imgsrc = “/images/3.jpg”;

$width = 780;

$height = 420;

resizejpg($imgsrc,$imgdst,$width,$height);

function resizejpg($imgsrc,$imgdst,$imgwidth,$imgheight)

{

//$imgsrc jpg格式图像路径 $imgdst jpg格式图像保存文件名 $imgwidth要改变的宽度 $imgheight要改变的高度

//取得图片的宽度,高度值

$arr = getimagesize($imgsrc);

header(“Content-type: image/jpg”);

$imgWidth = $imgwidth;

$imgHeight = $imgheight;

// Create image and define colors

$imgsrc = imagecreatefromjpeg($imgsrc);

$image = imagecreatetruecolor($imgWidth, $imgHeight); //创建一个彩色的底图

imagecopyresampled($image, $imgsrc, 0, 0, 0, 0,$imgWidth,$imgHeight,$arr[0], $arr[1]);

imagepng($image);

imagedestroy($image);

}

?>

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

// The file

$filename = ‘test.jpg’;

$percent = 0.5;

// Content type

header(‘Content-Type: image/jpeg’);

// Get new dimensions

list($width, $height) = getimagesize($filename);

$new_width = $width * $percent;

$new_height = $height * $percent;

// Resample

$image_p = imagecreatetruecolor($new_width, $new_height);

$image = imagecreatefromjpeg($filename);

imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output

imagejpeg($image_p, null, 100);

?>

示例2:

代码如下:

<?php

// The file

$filename = ‘test.jpg’;

// Set a maximum height and width

$width = 200;

$height = 200;

// Content type

header(‘Content-Type: image/jpeg’);

// Get new dimensions

list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $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

$src = ImageCreateFromJPEG(‘php.jpg’);

$width = ImageSx($src);

$height = ImageSy($src);

$x = $widht/2;

$y = $height/2;

$dst = ImageCreateTrueColor($x,$y);

ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$widht,$height);

header(‘Content-Type : image/png’);

ImagePNG($det);

?>

在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/dsc01244.jpg”,100,100);

imagedestory($thumb);

imagedestory($image);

?>

函数代码:

代码如下:

<?php

/*

* 图片缩略图

* $srcfile 来源图片,

* $rate 缩放比,默认为缩小一半,或者具体宽度象素值

* $filename 输出图片文件名jpg

* 例如: resizeimage(“zt32.jpg”,0.1);

* 例如: resizeimage(“zt32.jpg”,250);

* 说明:调用时直接把函数的结果放在HTML文件IMG标签中的SRC属性里

*/

function resizeimage($srcfile,$rate=.5, $filename = “” ){

$size=getimagesize($srcfile);

switch($size[2]){

case 1:

$img=imagecreatefromgif($srcfile);

break;

case 2:

$img=imagecreatefromjpeg($srcfile);

break;

case 3:

$img=imagecreatefrompng($srcfile);

break;

default:

exit;

}

//源图片的宽度和高度

$srcw=imagesx($img);

$srch=imagesy($img);

//目的图片的宽度和高度

if($size[0] <= $rate || $size[1] <= $rate){

$dstw=$srcw;

$dsth=$srch;

}else{

if($rate <= 1){

$dstw=floor($srcw*$rate);

$dsth=floor($srch*$rate);

}else {

$dstw=$rate;

$rate = $rate/$srcw;

$dsth=floor($srch*$rate);

}

}

//echo “$dstw,$dsth,$srcw,$srch “;

//新建一个真彩色图像

$im=imagecreatetruecolor($dstw,$dsth);

$black=imagecolorallocate($im,255,255,255);

imagefilledrectangle($im,0,0,$dstw,$dsth,$black);

imagecopyresized($im,$img,0,0,0,0,$dstw,$dsth,$srcw,$srch);

// 以 JPEG 格式将图像输出到浏览器或文件

if( $filename ) {

//图片保存输出

imagejpeg($im, $filename );

}else {

//图片输出到浏览器

imagejpeg($im);

}

//释放图片

imagedestroy($im);

imagedestroy($img);

}

?>

如果觉得《PHP中改变图片的尺寸大小的代码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。