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上显示时的样子,如进行何种比例 ...
随机推荐
- Struts2_Action
具体视图的返回可以由用户自己定义的Action来决定:具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容:具体Action的实现可以是一个普通的java类,里面有public String ...
- CKEditor插件开发
以前做过一个教育项目,是有关在线考试的.其中对编辑器CKEditor做了扩充,增加了插入客观题.主观题.选择题和判断题的功能.这里记述下CKEditor插件开发的过程. CKEditor以前叫FCKE ...
- Verilog八线 - 三线优先编码器设计(74LS148)
百度百科_74LS148 if语句法 //8线-3线优先编码器设计(74LS148) // //EI | A7 A6 A5 A4 A3 A2 A1 A0 | Y2 Y1 Y0 GS EO //0 | ...
- 笨办法学Python(六)
习题 6: 字符串(string)和文本 虽然你已经在程序中写过字符串了,你还没学过它们的用处.在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途.首先我们解释一下字符串是什 ...
- COGS 2075. [ZLXOI2015][异次元圣战III]ZLX的陨落
★★☆ 输入文件:ThefallingofZLX.in 输出文件:ThefallingofZLX.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 正当革命如火如 ...
- ubuntu16.04安装中文输入法(转)
转自: https://zhidao.baidu.com/question/619127469641961052.html ubuntu没有预装中文输入法,需要自己安装 sudo apt instal ...
- 那些年我用过的SAP IDE
在Google上根据关键字"程序员鄙视链"搜索,会得到68多万条结果. 玲琅满目的搜索结果里是众多不同维度划分的鄙视链. 其中有一个维度,就是编程工具的鄙视链,比如: 而我在SAP ...
- 命令行输入Jmeter提示不是内部或外部命令,处理方式:添加环境变量
命令行输入Jmeter提示不是内部或外部命令,需要在环境变量path中添加jmeter的bin目录绝对路径 我的电脑 > 右击 >属性 > 高级系统变量 > 环境变量 > ...
- mm_struct简要解析
http://blog.chinaunix.net/uid-20729583-id-1884615.html struct mm_struct { /* 指向线性区对象的链表头 ...
- nginx缓存批量清除
研究了一段时间的缓存清除,说说了解的三种方式吧. 1. 原始的只增加缓存模块的,根据访问的路径一条条清除. 根据此方式要进行批量清除的话,必须在设定的缓存目录下通过自己写的程序来读取ng ...