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上显示时的样子,如进行何种比例 ...
随机推荐
- IplImage转为Mat的方法
IplImage* S_change_out; Mat matimg; matimg=cvarrToMat(S_change_out);
- Eclipse + Tomcat 环境下配置 JSTL 标签
1.下载 jar 包. 网址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 2.解压后将jstl.jar和stan ...
- c++ stl sort example
c++ stl sort函数使用举例: #include <iostream> #include<vector> #include<algorithm> #incl ...
- Mysql学习第四天
1.跟用户相关的命令 (了解). DCL语句 1.1. 创建一个新的用户 CREATE USER 用户名@地址 IDENTIFIED BY '密码'; CREATE ...
- Arduino-串口函数Serial
串口是Arduino与其它设备进行通信的接口,我们需要很好的掌握它的使用.Arduino串口使用相关的函数共有10个(随着版本的升级,新版本加入了更多,具体请参见官网:http://www.ardui ...
- Selenium入门10 弹出框的处理 switch_to.alert
三种弹出框alert(一个按钮),confirm(两个确认,取消),prompt(两个按钮+输入框). 切换到弹框: switch_to_alert() 新版的selenium用: brows ...
- 静态库是.o文件的集合与弱符号
静态库是.o文件的集合. 静态库与弱符号的概念相关联. 在生成库文件时,不做强符号检查.
- react里面Fragments的使用
关于react Fragments,React 中一个常见模式是为一个组件返回多个元素.Fragments 可以让你聚合一个子元素列表,并且不在DOM中增加额外节点. render() { retur ...
- MongoDB在MFC下使用C++驱动编译错误的解决
.post p{text-indent: 2em;} 今天使用MongoDB的C++驱动,在编译连接的时候一直出现错误,显示的string_data.h下93行max宏的问题,可视其本身并不是调用ma ...
- MySQL 中while loop repeat 的基本用法
-- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和 /* while循环语法: while 条件 DO 循 ...