PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例


Posted in PHP onJune 17, 2019

本文实例讲述了PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类。分享给大家供大家参考,具体如下:

class AutoImage{
  private $image;
  public function resize($src, $width, $height){
    //$src 就是 $_FILES['upload_image_file']['tmp_name']
    //$width和$height是指定的分辨率
    //如果想按指定比例放缩,可以将$width和$height改为$src的指定比例
    $this->image = $src;
    $info = getimagesize($src);//获取图片的真实宽、高、类型
    if($info[0] == $width && $info[1] == $height){
      //如果分辨率一样,直接返回原图
      return $src;
    }
    switch ($info['mime']){
      case 'image/jpeg':
        header('Content-Type:image/jpeg');
        $image_wp = imagecreatetruecolor($width, $height);
        $image_src = imagecreatefromjpeg($src);
        imagecopyresampled($image_wp, $image_src, 0, 0, 0, 0, $width, $height, $info[0], $info[1]);
        imagedestroy($image_src);
        imagejpeg($image_wp,$this->image);
        break;
      case 'image/png':
        header('Content-Type:image/png');
        $image_wp = imagecreatetruecolor($width, $height);
        $image_src = imagecreatefrompng($src);
        imagecopyresampled($image_wp, $image_src, 0, 0, 0, 0, $width, $height, $info[0], $info[1]);
        imagedestroy($image_src);
        imagejpeg($image_wp,$this->image);
        break;
      case 'image/gif':
        header('Content-Type:image/gif');
        $image_wp = imagecreatetruecolor($width, $height);
        $image_src = imagecreatefromgif($src);
        imagecopyresampled($image_wp, $image_src, 0, 0, 0, 0, $width, $height, $info[0], $info[1]);
        imagedestroy($image_src);
        imagejpeg($image_wp,$this->image);
        break;
    }
    return $this->image;
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
域名和cookie问题(域名后缀)
Oct 10 PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
thinkPHP中create方法与令牌验证实例浅析
Dec 08 PHP
twig模板常用语句实例小结
Feb 04 PHP
PHP生成短网址方法汇总
Jul 12 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
php实现数组重复数字统计实例
Sep 30 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
详解php命令注入攻击
Apr 06 PHP
laravel http 自定义公共验证和响应的方法
Sep 29 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 PHP
PHP 并发场景的几种解决方案
Jun 14 #PHP
PHP 实现文件压缩解压操作的方法
Jun 14 #PHP
php反射学习之依赖注入示例
Jun 14 #PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 #PHP
PHP反射学习入门示例
Jun 14 #PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 #PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
Jun 14 #PHP
You might like
MYSQL数据库初学者使用指南
2006/11/16 PHP
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
PHP Directory 函数的详解
2013/03/07 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
vue filters的使用详解
2018/06/11 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
PyQt5每天必学之组合框
2018/04/20 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
机械工程师的岗位职责
2013/11/17 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
优秀员工评语
2014/02/10 职场文书
文字自荐书范文
2014/02/10 职场文书
保护野生动物倡议书
2014/05/16 职场文书
校园广播稿100字
2014/10/06 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书