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上显示时的样子,如进行何种比例 ...
随机推荐
- JSP中的Property 'name' not found on type java.lang.String
如果是在forEach中出现. 那么看下items里是不是没有el表达式,只是个字符串. 今天犯了好几次. 特此记录
- 【Unity3D学习笔记】解决放大后场景消失不显示问题
不知道为啥,我的Unity场景放大到一定大小后,就会消失... 解决方案: 选中一个GameObject,然后按F键. F键作用是聚焦,视图将移动,以选中对象为中心.
- 压力测试工具ab的使用
ab是Apache自带的HTTP压力测试工具,全称是ApacheBench 路径为\Apache\bin\ab.exe 参数文档: http://httpd.apache.org/docs/2.2/p ...
- Odoo (OpenERP/TinyERP)-10.0 (Debian 8)
平台: Ubuntu 类型: 虚拟机镜像 软件包: odoo-10.0 commercial erp odoo open source openerp tinyerp 服务优惠价: 按服务商许可协议 ...
- 建立本地yum源
使用环境 服务器处于内网,需要更新 网络资源紧张,节约带宽 建立yum目录 mkdir -p /opt/opmgmt/yum rsync服务器列表 centos mirrors epel mirror ...
- Spring Boot入门程序-STS
使用Eclipse EE 中的 Spring Tool插件,完成 第一个Spring Boot应用程序的创建. 一.安装Spirng Tool插件 在 Eclipse EE Oxygen版本,安装“S ...
- Verilog分频器的设计
大三都要结束了,才发现自己太多东西没深入学习. 对于偶分频:(计数到分频数的一半就翻转) 注: 图中只用了一个计数器,当然也可以用多个: 图中只计数到需要分频的一半,当然也可计数到更多: 图中从第一个 ...
- do..while(false)的用法总结
首先要注意: do..while(0) 代表do里面的东西至少被执行一次,在这里仅仅执行一次. 此种用法有三个用处: 代替{}代码块,实现局部作用域.在某些宏定义时非常有用: #define f(x) ...
- CopyTranslator-复制即翻译的外文辅助阅读翻译解决方案
英语/English 复制即翻译的外文辅助阅读翻译解决方案 请尽快更新到,这是你没有体验过的全新版本,只需3分钟,你就会跟我一样,爱上这个软件. 如果您觉得软件对您有所帮助,不用follow,不用fo ...
- user(),current_user()函数的区别
user() 表示当前的登录用户 current_user() 表示对应于mysql.user表里对应的账号.