<?php
//图片处理工具类
class Image{
//属性
private $thumb_width; //缩略图的宽
private $thumb_height;
//错误属性
public $thumb_error;
//构造方法
public function __construct($width = 0,$height = 0){
$this->thumb_width = ($width == 0) ? $GLOBALS['config']['admin_goods_thumb']['width'] : $width;
$this->thumb_height = ($height == 0) ? $GLOBALS['config']['admin_goods_thumb']['height'] : $height;
}
/*
* 制作缩略图
* @param1 string $src,原图路径,/uploads/20150122101010abcdef.gif
* @param2 string $path,缩略图保存路径/uploads/thumb_20150122101010abcdef.gif
* @return 缩略图的名字
*/
public function makeThumb($src,$path){
//判断原图是否存在
if(!file_exists($src)){
$this->thumb_error = '原图不存在!';
return false;
}2881064151
//打开原图资源
//获取能够使用的后缀
$ext = $this->getFunctionName($src); //gif
//拼凑函数名
$open = 'imagecreatefrom' . $ext; //imagecreatefromgif
$save = 'image' . $ext; //imagegif
//如果不清楚;echo $open,$save;exit;
//可变函数打开原图资源
$src_img = $open($src); //利用可变函数打开图片资源
//imagecreatefromgif($src)
//缩略图资源
$dst_img = imagecreatetruecolor($this->thumb_width,$this->thumb_height);
//背景色填充白色
$dst_bg_color = imagecolorallocate($dst_img,255,255,255);
imagefill($dst_img,0,0,$dst_bg_color);
//宽高比确定宽高
$dst_size = $this->thumb_width / $this->thumb_height;
//获取原图数据
$file_info = getimagesize($src);
$src_size = $file_info[0]/$file_info[1];
//求出缩略图宽和高
if($src_size > $dst_size){
//原图宽高比大于缩略图
$width = $this->thumb_width;
$height = round($width / $src_size);
}else{
$height = $this->thumb_height;
$width = round($height * $src_size);
}
//求出缩略图起始位置
$dst_x = round($this->thumb_width - $width)/2;
$dst_y = round($this->thumb_height - $height)/2;
//制作缩略图
if(imagecopyresampled($dst_img,$src_img,$dst_x,$dst_y,0,0,$width,$height,$file_info[0],$file_info[1])){
//采样成功:保存,将文件保存到对应的路径下
$thumb_name = 'thumb_' . basename($src);
$save($dst_img,$path . '/' . $thumb_name);
//保存成功
return $thumb_name;
}else{
//采样失败
$this->thumb_error = '缩略图采样失败!';
return false;
}
}
/*
* 获取文件要调用的函数名
* @param1 string $file,文件名字
* @return 通过文件后缀名得到的函数字符串
*/
private function getFunctionName($file){
//得到文件的后缀
$file_info = pathinfo($file);
$ext = $file_info['extension']; //后缀:gif,png,jpg,jpeg,pjpeg
//imagecreatefromgif,imagecreatefromjpeg,imagecreatefrompng
//定义一个数组保存函数名
$func = array(
'gif' => 'gif',
'png' => 'png',
'jpg' => 'jpeg',
'jpeg' => 'jpeg',
'pjpeg' => 'jpeg'
);
//返回值
return $func[$ext];
}
}

return 通过文件后缀名得到的函数字符串的更多相关文章

  1. shell判断文件后缀名是否为特定字符串

    如果文件是 .css文件 或 .js文件,则进行处理. if [ "${file##*.}"x = "css"x ]||[ "${file##*.}& ...

  2. C/C++获取文件后缀名并且比较

    以下这段是VC中过去文件后缀名的方法 1.CString GetSuffix(CString strFileName) {         return strFileName.Right(strFi ...

  3. VC获取文件后缀名

    VC获取文件后缀名 2011-07-28 10:30:50|  分类: Visual C++ and O |  标签: |举报 |字号大中小 订阅     1. CString GetSuffix(C ...

  4. [Java] 03 String获取文件后缀名,判断文件是否合法

    package test.string; import java.util.Arrays; import java.util.List; public class GetFileType { priv ...

  5. PHP获取文件后缀名的三种方法

    如下: <? PHP获取文件后缀名的几种方法1: function get_file_type($filename){ $type = substr($filename, strrpos($fi ...

  6. shell提取文件后缀名,并判断其是否为特定字符串

    如果文件是 .css文件 或 .js文件,则进行处理. file=$1 if [ "${file##*.}"x = "css"x ]||[ "${fi ...

  7. PHP获取文件后缀名

    PHP获取文件后缀名是PHP学习者常见的一种操作,无论是在面试过程中还是PHP新手自学中.PHP获取文件后缀名都是很普遍的需要掌握的一个知识点. 下面我们就给大家总结介绍PHP获取文件扩展名也就是后缀 ...

  8. 如何让Composer的autoload支持自定义文件后缀名

    PHP的Composer工具规范了我们对系统各种资源库的加载格式,借助于PHP的自动加载机制,可以很大程度上简化在应用开发过程中的类库文件引用场景.但到目前为止,它有个不是问题的问题,就是文件后缀名只 ...

  9. python应用-获取文件后缀名

    def get_suffix(filename,has_dot=False): """ 获取文件后缀名 :param filename: 文件名 :param has_d ...

随机推荐

  1. Linux安装bundle

    安装bundle文件的方法: cd 到文件目录再用sudo chmod +x XXXXXXX.bundle 加权限最后 ./XXXXXXXX.bundle 就行了. 第一步:sudo chmod +x ...

  2. 【Access2007】将Excel表导入至Access2007的当中一张已存在的表之中

    将Excel表导入至Access2007,你会发现万恶的Access2007会帮你自己主动创建一张表.全然没有问你是否要插入一张已存在的表之中. 那么,我们须要这样解决: 一.依照正常的步骤先将Exc ...

  3. MongoDB中常用的find

    接着前一篇文章,下面主要介绍一下MongoDB中常用的find操作. 先打开MongoDB shell,通过下面一组命令插入一些数据. post1 = {} post2 = {} post3 = {} ...

  4. 高德地图api比例尺

    20-10m-(19=<zoom<20) 19-10m-(19=<zoom<20) 18-25m-(18=<zoom<19) 17-50m-(17=<zoom ...

  5. 找不同diff-打补丁patch

    Q:为什么要找不同,为什么要打补丁? A: 在Linux应用中,作为DBA,我们知道MySQL跑在Linux系统之上,数据库最重要的追求就是性能,“稳”是重中之重,所以不能动不动就是换系统或是换这换那 ...

  6. ssh面密码登录配置-hadoop安装准备

    1. 用ssh-keygen创建公钥,一直回车即可 root@kali:~# ssh-keygen -t rsa Generating public/private rsa key pair. Ent ...

  7. Ansible 安装和管理服务

    ansible 使用 yum 模块来安装软件包,使用 service 模块来启动软件: [root@localhost ~]$ ansible 192.168.119.134 -m yum -a &q ...

  8. The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. Make s

    我出现这个问题是引用资源文件问题 helper.getView(R.id.in_pic).setBackgroundResource(item.getResourceId()); //错的helper ...

  9. 深入理解tomcat9---源码构建

    环境准备: tomcat9源码 maven(bin目录加入path系统环境变量) jdk8 idea 源码构建步骤: 1. 在解压缩的源码目录下新建pom.xml文件,内容如下: <?xml v ...

  10. Myeclipse10使用git

    用Myeclipse安装egit,使用官网最新地址或者下载最新的egit插件到本地安装均在team中看不到git,最后发现到http://download.eclipse.org/egit/updat ...