前台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)--封装类的更多相关文章

  1. 黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  2. C# webform上传图片并生成缩略图

    其实里面写的很乱,包括修改文件名什么的都没有仔细去写,主要是想记录下缩略图生成的几种方式 ,大家明白就好! void UpImgs() { if (FileUpload1.HasFile) { str ...

  3. phpcms v9图片生成缩略图变成黑色解决方法

    今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...

  4. ngx_image_thumb模块生成缩略图

    ngx_image_thumb是nginx中用来生成缩略图的模块. 编译前确定已经安装了libcurl-dev libgd2-dev libpcre-dev gd-devel pcre-devel l ...

  5. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  6. .net又一个生成缩略图的方法,不变形

    生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 /// <summary> /// 为图片生成缩略图 by 何问起 /// ...

  7. yii php 图片上传与生成缩略图

    今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图              ($pic_action_url = $this->createAbsoluteUrl('h ...

  8. asp.net生成缩略图

    /// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...

  9. 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条

    不了解Uploadify的,先看看前一篇详细说明 http://www.cnblogs.com/XuebinDing/archive/2012/04/26/2470995.html Uploadify ...

随机推荐

  1. Oracle 数据类型 与C#映射关系

    大部分类型的对应关系:原文:http://2143892.blog.51cto.com/2133892/499353 序号 Oracle数据类型 .NET类型 GetOracleValue类型 DbT ...

  2. 最常用的15大Eclipse开发快捷键技巧

    1.alt+?或alt+/:自动补全代码或者提示代码 这个是我最得意的快捷键组合了,尤其是当输入syso几个字符之后,2个手指轻松按下这2个键的时候,自动就补全System.out.println() ...

  3. css之IE hack 方法[ IE6 - IE9]

    ps: 由于近来需要研究IE下兼容问题,今天又再次翻起起这些针对IE的hack,于是决定写下这篇笔记,记录下这些本该献祭级浏览器下的处理方法,用于备忘 一.IE10以及以下版本均会生效(ie edge ...

  4. C++基础知识 基类指针、虚函数、多态性、纯虚函数、虚析构

    一.基类指针.派生类指针 父类指针可以new一个子类对象 二.虚函数 有没有一个解决方法,使我们只定义一个对象指针,就可以调用父类,以及各个子类的同名函数? 有解决方案,这个对象指针必须是一个父类类型 ...

  5. POJ 1045

    #include<iostream> #include<cmath> #include<iomanip> using namespace std; int main ...

  6. Fast Newman-FN算法以及模块度定义介绍

    一.社区的定义 Newman第一次提出模块度定义就是在2004年发表的这篇文章“fast algorithm for community structure in networks”,第一次用量化的公 ...

  7. Spring Security构建Rest服务-1205-Spring Security OAuth开发APP认证框架之Token处理

    token处理之二使用JWT替换默认的token JWT(Json Web Token) 特点: 1,自包含:jwt token包含有意义的信息 spring security oauth默认生成的t ...

  8. C#设计模式系列目录

    http://www.cnblogs.com/libingql/archive/2012/04/16/2451608.html 抽空,学习,加强!

  9. 拦截并记录数据库操作-Logging and Intercepting Database Operations

    原文:http://msdn.microsoft.com/zh-cn/data/dn469464 Logging and Intercepting Database Operations Starti ...

  10. Spring MVC 实现web Socket向前端实时推送数据

    最近项目中用到了webSocket服务,由后台实时向所有的前端推送消息,前端暂时是不可以发消息给后端的,数据的来源是由具体的设备数据收集器收集起来,然后通过socket推送给后端,后端收到数据后,再将 ...