首页 > 编程语言 >PHP处理图片成指定大小的缩略图--简单封装的类

PHP处理图片成指定大小的缩略图--简单封装的类

时间:2024-08-09 14:18:57浏览次数:13  
标签:cut img 缩略图 -- height width file new PHP

<?PHP
//图像处理类
class Image {
    private $file;    //图片地址
    private $width;   //图片长度
    private $height;   //图片长度
    private $type;    //图片类型
    private $img;    //原图的资源句柄
    private $new;    //新图的资源句柄
 
    //构造方法,初始化
    public function __construct($_file) {
        $this->file = $_file;
        list($this->width, $this->height, $this->type) = getimagesize($this->file);
        $this->img = $this->getFromImg($this->file, $this->type);
    }
    //缩略图(固定长高容器,图像等比例,扩容填充,裁剪)[固定了大小,不失真,不变形]
    public function thumb($new_width = 0,$new_height = 0) {
  
        if (empty($new_width) && empty($new_height)) {
			$new_width = $this->width;
			$new_height = $this->height;
        }
  
		if (!is_numeric($new_width) || !is_numeric($new_height)) {
			$new_width = $this->width;
			$new_height = $this->height;
		}
  
		//创建一个容器
		$_n_w = $new_width;
		$_n_h = $new_height;
	  
		//创建裁剪点
		$_cut_width = 0;
		$_cut_height = 0;
	  
		if ($this->width < $this->height) {
			$new_width = ($new_height / $this->height) * $this->width;
		} else {
			$new_height = ($new_width / $this->width) * $this->height;
		}
		if ($new_width < $_n_w) { //如果新高度小于新容器高度
			$r = $_n_w / $new_width; //按长度求出等比例因子
			$new_width *= $r; //扩展填充后的长度
			$new_height *= $r; //扩展填充后的高度
			$_cut_height = ($new_height - $_n_h) / 2; //求出裁剪点的高度
		}
	  
		if ($new_height < $_n_h) { //如果新高度小于容器高度
			$r = $_n_h / $new_height; //按高度求出等比例因子
			$new_width *= $r; //扩展填充后的长度
			$new_height *= $r; //扩展填充后的高度
			$_cut_width = ($new_width - $_n_w) / 2; //求出裁剪点的长度
		}
 
        $this->new = imagecreatetruecolor($_n_w,$_n_h);
        imagecopyresampled($this->new,$this->img,0,0,$_cut_width,$_cut_height,$new_width,$new_height,$this->width,$this->height);
    }
 
    //加载图片,各种类型,返回图片的资源句柄
    private function getFromImg($_file, $_type) {
        switch ($_type) {
			case 1 :
				$img = imagecreatefromgif($_file);
				break;
			case 2 :
				$img = imagecreatefromjpeg($_file);
				break;
			case 3 : 
				$img = imagecreatefrompng($_file);
				break;
			default:
				$img = '';
        }
        return $img;
    }
 
    //图像输出
    public function out() {
        imagepng($this->new,$this->file);//第二个参数为新生成的图片名
        imagedestroy($this->img);
        imagedestroy($this->new);
    }
}
//使用demo
$_path = '1.jpg';//$_path为图片文件的路径
$_img = new Image($_path);
$_img->thumb(100, 100);
$_img->out();
?>

标签:cut,img,缩略图,--,height,width,file,new,PHP
From: https://www.cnblogs.com/qcy-blog/p/18350664

相关文章

  • 读取EXCEL数据导入到oracle
    importpandasaspdimportcx_Oraclefromdatetimeimportdatetime#数据库连接信息username='****'#替换为您的用户名password='****'#替换为您的密码dsn='192.168.10.216:1521/ORCL'#替换为您的数据源名称#读取Excel文件excel_file=......
  • java实现用一个变量表示多个属性的状态
    1、流程启动及状态流转举例(场景:同一份数据在多个流程中流转,确定各流程自己的状态)1.发起流程核心代码/***二进制方式*@paramorgId*@paramnode*@paramcontractIds*/privatevoidstartWithPosition(StringorgId,Stringnode,List<String......
  • 多用户电商分销系统的创新与应用
    多用户电商分销系统是一种先进的电子商务平台解决方案,旨在构建一个允许多个用户(包括商家、分销商、消费者等)共同参与、相互协作的在线销售网络。该系统通过数字化手段,整合供应链资源,优化分销渠道,实现商品从生产商到最终消费者的高效流通,同时促进多方共赢。系统功能1.商家入驻与......
  • php+html5+ajax实现上传图片的方法
    test.php<?phpif(isset($_POST['upload'])){var_dump($_FILES);move_uploaded_file($_FILES['upfile']['tmp_name'],'up_tmp/'.time().'.dat');exit;}?>html<!doctypehtml><htmllang......
  • 派胜OA ExpressOA 3.0 现已支持 Debian 12
    派胜ExpressOA3.0跨平台,高性能,现代化的协同办公平台系统。派胜OA现已支持Debian12,Debian是一个完全自由的操作系统!派胜OA官网:www.paioffice.com有很多理由可以选择Debian作为您的操作系统—作为用户、作为开发者,甚至是在企业环境中。大多数用户称赞它的稳定性,以及软件包......
  • 滴滴出行:多元化出行服务创新与市场领先地位
    一、产品概述产品名称:滴滴出行产品定位:滴滴出行是一款集多种出行方式于一体的综合出行服务平台,致力于为用户提供安全、便捷、高效的出行体验。二、功能描述1.多样化出行服务:滴滴出行提供包括快车、专车、出租车、顺风车、代驾、公交、地铁、单车等多种出行方式,满足不同用户的......
  • 派胜OA ExpressOA 3.0 现已支持 Ubuntu 24.04 LTS
    ExpressOA3.0跨平台,高性能,现代化的协同办公平台系统。ExpressOA3.0现已支持Ubuntu24.04LTS-世界上最流行的Linux操作系统。访问派胜OA官网:www.paioffice.com随着.NET8的推出,Ubuntu在支持.NET社区方面迈出了重大的一步。.NET8将在Ubuntu24.04LTS及22.04......
  • Motrix下载器使用教程
    使用浏览器下载通常会有速度慢的问题,需要借助一些下载管理器软件来进行提速,但有的下载器存在广告多、或者需要付费成为会员才能享受高速下载。这里介绍的Motrix是一款无广告、免费、开源的下载软件,目前使用体验不错,使用方法也很简单。下载安装前往官网进行下载:https://motrix.......
  • 回溯的简单辅助讲解
    回溯策略我个人其实把回溯看做递归的一个应用,回溯简单来讲就是用递归的方式深度遍历所有的可能,而在某些可能是一个解的时候,就记录,这目前看来和回溯两个字没啥关系,问题就在于,回溯可以解决一些需要我们回退元素并继续尝试的问题。刚才的概念里包含了两个关键词:“回退”,“尝试”。......
  • Linux内核及补丁编译
    Linux内核及补丁编译一、源码下载1、查看当前linux内核版本uname-r2、获取对应版本的linux源码方式1:源方式下载sudoaptsearchlinux-source##找到对应版本的linux-sourcesudoaptinstalllinux-source-5.4.0##以5.4.0举例mkdir~/Projectscd~/Projectssudocp......