图片等比例缩放

自定义函数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_");

  1. <?php
  2. function ImageUpdateSize($pricname, $maxx, $maxy, $pre)
  3. {
  4. //1、获取图片基本信息
  5. $info = getimagesize($pricname);
  6. $w = $info[0]; //源图片宽度
  7. $h = $info[1]; //源图片高度
  8. // var_dump($info);
  9. // $info['2']存储的是图片的类型:1=GIF, 2=JPG, 3=PNG
  10.  
  11. //2、获取图片类型并为此创建对应类型的新图片资源(JPG GIF PNG) <= imagecopyresampled()进行缩放处理的函数语法要求
  12. //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 )
  13. //参数:dst_image目标图象连接资源 src_image源图象连接资源
  14. //dst_x目X 坐标点 dst_y目标Y坐标点 src_x源的X坐标点 src_y源的Y坐标点
  15. //dst_w目标宽度 dst_h目标高度 src_w源图象的宽度 src_h源图象的高度
  16.  
  17. switch($info[2]){
  18. case 1:
  19. $im = imagecreatefromgif($pricname);
  20. break;
  21. case 2:
  22. $im = imagecreatefromjpeg($pricname);
  23. break;
  24. case 3:
  25. $im = imagecreatefrompng($pricname);
  26. break;
  27. default:
  28. die("图片类型错误!");
  29. }
  30.  
  31. //3、计算出缩放比例
  32. if(($maxx/$w) > ($maxy/$h)){ //假设原宽高(600:300) 固定最大缩放宽高=100 (100/600)(100/300)取值最小那个
  33. $b = $maxy/$h;
  34. }else{
  35. $b = $maxx/$w;
  36. }
  37. //4、计算缩放后尺寸,floor()舍去小数部分取整
  38. $nw = floor($w * $b);
  39. $nh = floor($h * $b);
  40.  
  41. //5、创建一个新的图片源作为目标图像
  42. $nim = imagecreatetruecolor($nw, $nh);
  43.  
  44. //6、执行等比例缩放,(结果为:拷贝成新图像nim)
  45. $npricname = imagecopyresampled($nim, $im, 0,0,0,0, $nw, $nh, $w, $h);
  46.  
  47. //7、输出图像,根据源图像的类型,输出对应的类型
  48. $picinfo = pathinfo($pricname);
  49. $new_name = $picinfo["dirname"]."/".$pre.$picinfo["basename"]; //文件名
  50. switch($info[2]){
  51. case 1:
  52. imagegif($nim, $new_name);
  53. break;
  54. case 2:
  55. imagejpeg($nim, $new_name);
  56. break;
  57. case 3:
  58. imagepng($nim, $new_name);
  59. break;
  60. }
  61.  
  62. //8、销毁图像
  63. imagedestroy($im);
  64. imagedestroy($nim);
  65. }
  66.  
  67. echo ImageUpdateSize("./image/1.jpg", 100, 100, "s_");
  68. ?>

PHP.18-图片等比例缩放的更多相关文章

  1. C#图片按比例缩放

    C#图片按比例缩放: // 按比例缩放图片 public Image ZoomPicture(Image SourceImage, int TargetWidth, int TargetHeight) ...

  2. 理解CSS3中的background-size(对响应性图片等比例缩放)

    理解CSS3中的background-size(对响应性图片等比例缩放) 阅读目录 background-size的基本属性 给图片设置固定的宽度和高度的 固定宽度400px和高度200px-使用ba ...

  3. 让ie6也支持max-width,和max-height实现图片等比例缩放

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. (转载)让ie6也支持max-width,和max-height实现图片等比例缩放

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 【转】微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应

    原文[https://blog.csdn.net/qq_31383345/article/details/53127804] 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于 ...

  6. css 如何实现图片等比例缩放

    在进行布局的时候,很多PM都要求图片等比例缩放,而且要求图片不失真,不变形,但是UI设计好了这个div的宽度又不能随意更改,而后台传过来的图片也不是等比例的图片,这就比较难受了,写成 width: 1 ...

  7. CSS让DIV按照背景图片的比例缩放,并让背景图片填充整个元素(转)

    目的是:通过background的一系列属性,让DIV按照背景图片的比例缩放,并让背景图片填充整个DIV 首先我们需要让背景图片在指定的DIV中全部填充显示 之前看有用类似 background-at ...

  8. 微信小程序学习点滴《十二》:图片等比例缩放 获取屏幕尺寸图片尺寸 自适应

    原文:http://www.wxapp-union.com/portal.php?mod=view&aid=360 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于屏 ...

  9. css技术之用最高和最宽的限制“max-height和max-width”做图片同比例缩放,达到图片不变形目的,做出批量打印图片功能,页面打印“window.print()”

    一.简介 他们是为流而生的,像width/height这种定死的砖头式布局,min-width/max-width就没有存在的意义 ,min-width/max-width一定是自适应布局或流体布局中 ...

  10. ImageButton如何让图片按比例缩放不被拉伸

    了解 在安卓的界面XML中,ImageButton有这样一个属性android:scaleType,他干嘛的? ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例 ...

随机推荐

  1. SQLServer:执行计划

    http://www.cnblogs.com/kissdodog/category/532309.html

  2. Scala OOP

    Scala OOP 1.介绍 Scala是对java的封装,底层仍然采用java来实现,因此Scala也是面向对象的.其中scala给出了class.object和trait三种面向对象的组件.

  3. 08、Spark常用RDD变换

    08.Spark常用RDD变换 8.1 概述 Spark RDD内部提供了很多变换操作,可以使用对数据的各种处理.同时,针对KV类型的操作,对应的方法封装在PairRDDFunctions trait ...

  4. js报变量 is not a function

    是变量名和函数名相同导致的 比如: function a(){} var a = a();

  5. jQuery-prepend、append、before、after的区别

    举例说明,原始html代码如下: <ol> <li>List item 1</li> <li>List item 2</li> <li ...

  6. Verilog分频器的设计

    大三都要结束了,才发现自己太多东西没深入学习. 对于偶分频:(计数到分频数的一半就翻转) 注: 图中只用了一个计数器,当然也可以用多个: 图中只计数到需要分频的一半,当然也可计数到更多: 图中从第一个 ...

  7. Sublime Text3 + Markdown + 实时预览

    Sublime Text3是一款给力的文本编辑器,通过安装插件可以编辑Markdown文本,在编辑Markdown文本的同时可以实时预览编辑效果. 安装准备: 找到菜单栏:Preferences → ...

  8. C4C销售订单中业务伙伴的自动决定功能Partner determination procedure

    例子:我新建一个Sales Order,account 字段选择ID为1001的Account:Porter LLC 创建成功后,观察这个Sales Order的Involved Party里,Bil ...

  9. Locust的官网及安装

    Locust官网: https://docs.locust.io/en/latest/installation.html for Python 3: $ python3 -m pip install ...

  10. 富文本 文字图片点击,(TextView)

    textview上的富文本支持 文字,图片的点击事件 - (void)protocolIsSelect:(BOOL)select { NSMutableAttributedString *attrib ...