PHP生成缩略图(3)--封装类
前台php代码
- <?php
- require_once 'img_thumb.class.php';
- $image = new ImgLib();
- //源图路径
- $src_path='E:/wamp/www/Demo/IMG/01.jpg';
- //把新图片的名称返回浏览器
- echo $image->thumb($src_path,300,300);
- ?>
后台php代码
- <?php
- class ImgLib{
- private $error;
- public function getError(){
- return $this->error;
- }
- /**
- *
- * 制作缩略图
- * @param $src_path string 原图路径
- * @param $max_w int 画布的宽度
- * @param $max_h int 画布的高度
- * @param $flag bool 是否是等比缩略图 默认为false
- * @param $prefix string 缩略图的前缀 默认为'sm_'
- *
- */
- public function thumb($src_path,$max_w,$max_h,$prefix = 'sm_',$flag = true){
- //获取文件的后缀
- $ext= strtolower(strrchr($src_path,'.'));
- //判断文件格式
- switch($ext){
- case '.jpg':
- $type='jpeg';
- break;
- case '.gif':
- $type='gif';
- break;
- case '.png':
- $type='png';
- break;
- default:
- $this->error='文件格式不正确';
- return false;
- }
- //拼接打开图片的函数
- $open_fn = 'imagecreatefrom'.$type;
- //打开源图
- $src = $open_fn($src_path);
- //创建目标图
- $dst = imagecreatetruecolor($max_w,$max_h);
- //源图的宽
- $src_w = imagesx($src);
- //源图的高
- $src_h = imagesy($src);
- //是否等比缩放
- if ($flag) { //等比
- //求目标图片的宽高
- if ($max_w/$max_h < $src_w/$src_h) {
- //横屏图片以宽为标准
- $dst_w = $max_w;
- $dst_h = $max_w * $src_h/$src_w;
- }else{
- //竖屏图片以高为标准
- $dst_h = $max_h;
- $dst_w = $max_h * $src_w/$src_h;
- }
- //在目标图上显示的位置
- $dst_x=(int)(($max_w-$dst_w)/2);
- $dst_y=(int)(($max_h-$dst_h)/2);
- }else{ //不等比
- $dst_x=0;
- $dst_y=0;
- $dst_w=$max_w;
- $dst_h=$max_h;
- }
- //生成缩略图
- imagecopyresampled($dst,$src,$dst_x,$dst_y,0,0,$dst_w,$dst_h,$src_w,$src_h);
- //文件名
- $filename = basename($src_path);
- //文件夹名
- $foldername=substr(dirname($src_path),0);
- //缩略图存放路径
- $thumb_path = $foldername.'/'.$prefix.$filename;
- //把缩略图上传到指定的文件夹
- imagepng($dst,$thumb_path);
- //销毁图片资源
- imagedestroy($dst);
- imagedestroy($src);
- //返回新的缩略图的文件名
- return $prefix.$filename;
- }
- }
- ?>
结果:
浏览器:
文件夹:
PHP生成缩略图(3)--封装类的更多相关文章
- 黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)
C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...
- C# webform上传图片并生成缩略图
其实里面写的很乱,包括修改文件名什么的都没有仔细去写,主要是想记录下缩略图生成的几种方式 ,大家明白就好! void UpImgs() { if (FileUpload1.HasFile) { str ...
- phpcms v9图片生成缩略图变成黑色解决方法
今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...
- ngx_image_thumb模块生成缩略图
ngx_image_thumb是nginx中用来生成缩略图的模块. 编译前确定已经安装了libcurl-dev libgd2-dev libpcre-dev gd-devel pcre-devel l ...
- js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能
html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...
- .net又一个生成缩略图的方法,不变形
生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 /// <summary> /// 为图片生成缩略图 by 何问起 /// ...
- yii php 图片上传与生成缩略图
今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图 ($pic_action_url = $this->createAbsoluteUrl('h ...
- asp.net生成缩略图
/// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...
- 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条
不了解Uploadify的,先看看前一篇详细说明 http://www.cnblogs.com/XuebinDing/archive/2012/04/26/2470995.html Uploadify ...
随机推荐
- 面对对象编程(OOP, Object Oriented Programming)及其三个基本特性
一千个读者,一千个哈姆雷特.对于面对对象编程,书上都会告诉我们它有三个基本特性,封装,继承,多态,但谈起对这三点的见解,又是仁者见仁智者见智,感觉还是得多去编程中体验把 . 面向对象编程(OOP, O ...
- NLP1 —— Python自然语言处理环境搭建
最近开始研究自然语言处理了,所以准备好好学习一下,就跟着<Python自然语言处理>这本书,边学边整理吧 安装 Mac里面自带了python2.7,所以直接安装nltk就可以了. 默认执行 ...
- 再看javascript执行上下文、变量对象
突然看到一篇远在2010年的老文,作者以章节的形式向我们介绍了ECMA-262-3的部分内容,主要涉及到执行上下文.变量对象.作用域.this等语言细节.内容短小而精悍,文风直白而严谨,读完有酣畅淋漓 ...
- class字节码结构(零:补充:class结构,常量池,字节码指令)
JVM高级特性与实践(五):实例探究Class类文件 及 常量池 JVM高级特性与实践(六):Class类文件的结构(访问标志,索引.字段表.方法表.属性表集合) JVM高级特性与实践(七):九大类字 ...
- POJ 1015
#include<iostream> #include<algorithm> #define MAXN 201 #define count C_ount using names ...
- 原生Js弹窗插件|web弹出层组件|对话框
wcPop.js 是一款基于原生javascript开发的前端 web版 弹窗组件,遵循原生 H5/css3/JS 的书写规范,简单实用.拿来即用(压缩后仅10KB).已经兼容各大主流浏览器.内含多种 ...
- h5在线1v1客服|web在线客服系统|h5即时聊天
网上有很多环信.美恰之类的客服系统,最近也使用h5+css3+fontJs+swiper+wcPop等技术架构开发了一个在线客服(1v1沟通聊天),可以应用到在线临时聊天.在线咨询等情景.实现了消息. ...
- zabbix 自定义 key (转)
转自:http://www.cnblogs.com/miclesvic/p/6164303.html 1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/ ...
- 简单shell expect程序
1 expect程序 用的Ubuntu,本身没带expect,安装. sudo apt-get install expect (关于expect,参见http://www.tclchina.com/a ...
- CS231n学习笔记-图像分类笔记(下篇)
原文地址:智能单元 K-Nearest Neighbor分类器 大家可能注意到了,为什么只用最相似的一张图片的标签来作为测试图像的标签呢?这不是很奇怪吗!是的,使用K-Nearest Neighbor ...