PHP.18-图片等比例缩放
图片等比例缩放
自定义函数ImageUpdateSize($pricname, $maxx, $maxy, $pre)
1、$pricname:被缩放的图片源(路径);2、$maxx,$maxy:缩放后最大的宽度、高度;3、$pre:缩放后图片的前缀名
思路与部分代码
//1、获取图片基本信息
$info = getimagesize($pricname);
$w = $info[0]; //源图片宽度
$h = $info[1]; //源图片高度
// $info['2']存储的是图片的类型:1=GIF, 2=JPG, 3=PNG
//2、获取图片类型并为此创建对应类型的新图片资源(JPG GIF PNG) <= 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源图象的高度
switch($info[2]){
imagecreatefromgif($pricname);
default:
die("图片类型错误!");
//3、计算出缩放比例
if(($maxx/$w) > ($maxy/$h)){ //假设原宽高(600:300) 固定最大缩放宽高=100 (100/600)(100/300)取值最小那个
$b = $maxy/$h;
}else{
$b = $maxx/$w;
}
//4、计算缩放后尺寸,floor()舍去小数部分取整
$nw = floor($w * $b);
$nh = floor($h * $b);
//5、创建一个新的图片源作为目标图像
$nim = imagecreatetruecolor($nw, $nh);
//6、执行等比例缩放,(结果为:拷贝成新图像nim)
$npricname = imagecopyresampled($nim, $im, 0,0,0,0, $nw, $nh, $w, $h);
//7、输出图像,根据源图像的类型,输出对应的类型
$picinfo = pathinfo($pricname);
$new_name = $picinfo["dirname"]."/".$pre.$picinfo["basename"]; //文件名
switch($info[2])
//8、销毁图像
imagedestroy($im);
imagedestroy($nim);
echo ImageUpdateSize("./image/1.jpg", 100, 100, "s_");
<?php
function ImageUpdateSize($pricname, $maxx, $maxy, $pre)
{
//1、获取图片基本信息
$info = getimagesize($pricname);
$w = $info[0]; //源图片宽度
$h = $info[1]; //源图片高度
// var_dump($info);
// $info['2']存储的是图片的类型:1=GIF, 2=JPG, 3=PNG //2、获取图片类型并为此创建对应类型的新图片资源(JPG GIF PNG) <= 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源图象的高度 switch($info[2]){
case 1:
$im = imagecreatefromgif($pricname);
break;
case 2:
$im = imagecreatefromjpeg($pricname);
break;
case 3:
$im = imagecreatefrompng($pricname);
break;
default:
die("图片类型错误!");
} //3、计算出缩放比例
if(($maxx/$w) > ($maxy/$h)){ //假设原宽高(600:300) 固定最大缩放宽高=100 (100/600)(100/300)取值最小那个
$b = $maxy/$h;
}else{
$b = $maxx/$w;
}
//4、计算缩放后尺寸,floor()舍去小数部分取整
$nw = floor($w * $b);
$nh = floor($h * $b); //5、创建一个新的图片源作为目标图像
$nim = imagecreatetruecolor($nw, $nh); //6、执行等比例缩放,(结果为:拷贝成新图像nim)
$npricname = imagecopyresampled($nim, $im, 0,0,0,0, $nw, $nh, $w, $h); //7、输出图像,根据源图像的类型,输出对应的类型
$picinfo = pathinfo($pricname);
$new_name = $picinfo["dirname"]."/".$pre.$picinfo["basename"]; //文件名
switch($info[2]){
case 1:
imagegif($nim, $new_name);
break;
case 2:
imagejpeg($nim, $new_name);
break;
case 3:
imagepng($nim, $new_name);
break;
} //8、销毁图像
imagedestroy($im);
imagedestroy($nim);
} echo ImageUpdateSize("./image/1.jpg", 100, 100, "s_");
?>
PHP.18-图片等比例缩放的更多相关文章
- C#图片按比例缩放
C#图片按比例缩放: // 按比例缩放图片 public Image ZoomPicture(Image SourceImage, int TargetWidth, int TargetHeight) ...
- 理解CSS3中的background-size(对响应性图片等比例缩放)
理解CSS3中的background-size(对响应性图片等比例缩放) 阅读目录 background-size的基本属性 给图片设置固定的宽度和高度的 固定宽度400px和高度200px-使用ba ...
- 让ie6也支持max-width,和max-height实现图片等比例缩放
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- (转载)让ie6也支持max-width,和max-height实现图片等比例缩放
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【转】微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应
原文[https://blog.csdn.net/qq_31383345/article/details/53127804] 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于 ...
- css 如何实现图片等比例缩放
在进行布局的时候,很多PM都要求图片等比例缩放,而且要求图片不失真,不变形,但是UI设计好了这个div的宽度又不能随意更改,而后台传过来的图片也不是等比例的图片,这就比较难受了,写成 width: 1 ...
- CSS让DIV按照背景图片的比例缩放,并让背景图片填充整个元素(转)
目的是:通过background的一系列属性,让DIV按照背景图片的比例缩放,并让背景图片填充整个DIV 首先我们需要让背景图片在指定的DIV中全部填充显示 之前看有用类似 background-at ...
- 微信小程序学习点滴《十二》:图片等比例缩放 获取屏幕尺寸图片尺寸 自适应
原文:http://www.wxapp-union.com/portal.php?mod=view&aid=360 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于屏 ...
- css技术之用最高和最宽的限制“max-height和max-width”做图片同比例缩放,达到图片不变形目的,做出批量打印图片功能,页面打印“window.print()”
一.简介 他们是为流而生的,像width/height这种定死的砖头式布局,min-width/max-width就没有存在的意义 ,min-width/max-width一定是自适应布局或流体布局中 ...
- ImageButton如何让图片按比例缩放不被拉伸
了解 在安卓的界面XML中,ImageButton有这样一个属性android:scaleType,他干嘛的? ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例 ...
随机推荐
- Win7安装软件,装到microsoft.vc90.crt时卡住的解决办法
在安装某些程序的时候,可能会出现下列提示:an error occured during the installation of assembly ‘microsoft.vc90.crt,versio ...
- Android 5.0 以上监听网络变化
大家好,大概有一个多月没有更新博客了,我是干什么去了呢?很明显,程序员当然要加班……这一次跟大家分享一下新项目的一些心得. 监听网络变化在开发中是经常用到的,例如我们断网有一些友好的提示,或者根据不同 ...
- 将零散文件使用ICSharpCode.SharpZipLib压缩打包后一次性下载
public static Stream CreateZip(List<string> listPath, int level = 5) { MemoryStream mstream = ...
- 初识ImageSwither
imageswitcher继承自viewswitcher,使用ImageSwither只需要两步: 1.为ImageSwither提供一个ViewFactory,该ViewFactory生成的View ...
- 在Sql Server中使用Guid类型的列及设置Guid类型的默认值
1.列的类型为uniqueidentifier 2.列的默认值可以设为newid()
- git 因线上分支名重复导致无法拉取代码
有时 git pull 或 git fetch 时发现 git 报了个异常,说法像是无法将线上某个分支与本地分支合并,由于分支是...(很长的hash)但是分支却是...(很长的hash) 仔细查查后 ...
- PowerMock学习笔记,对单例的测试方法
对单例进行mock 单例类 public class PmModelHandler { // 包含要mock掉的成员变量 private static LogService logger = LogS ...
- shell脚本学习(1)列出一组IP内所有活动主机
1.用ping命令编写脚本来查询一组IP地址同时检查他们是否处于活动状态 [zhi@centos7 ~]$ vi CheckHostStatus.sh [zhi@centos7 ~]$ ll 总用量 ...
- Git的使用(详细)
一下内容引自网络 原帖:http://blog.jobbole.com/78960/ 原文出处: 涂根华的博客
- PHP:global全局变量的使用
global全局变量能够让我们更好的去运用,直接上例子: 1.一个函数,获取函数外的内容: 得到的结果: 2.两个函数,函数2获取函数1的全局变量内容:(重点) 结果: 以上就是我的总结啦 END