前台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. hdu5833----高斯消元

    题目大意: 给你n个整数,从中选一些数,他们的乘积为一个完全平方数 问有多少种这样的方式,已知这些数的素因素不超过2000. 思路: 一个完全平方数素因素的个数肯定是偶数个. 我们只要从n个数中选取所 ...

  2. 【北京】安全研究员/工程师-20-35K,人体工程学座椅坐等你来~

    招聘地点:北京市西城区 薪资:20-35K 人体工程学座椅,高大上环境坐等你来 [招聘]安全研究员+安全工程师-北京数字观星科技有限公司 北京数字观星科技有限公司成立于2016年9月29日,是一家致力 ...

  3. Tcp下载文件

    一.下载文件 tcp 客户端 1.创建套接字down_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)2.获取ip,portdown ...

  4. Git 使用流程

    # 下载远程仓库到本地 git clone 仓库地址cd 本地仓库文件夹 # 创建本地开发分支并与远程开发分支关联 git checkout -b develop origin/developgit ...

  5. Angularjs集成第三方js插件之Uploadify

    有时候需要用一些第三方插件,比如datepicker,slider,或者tree等.以前的做法是直接通过jquery取得某个元素,然后调用某个方法即可.但在angularjs中,不能直接这么写,必须写 ...

  6. UBUNTU 安装中文语言包命令

    本次在UBUNTU安装国外程序,需要中文包 才会是中文. apt-get install language-pack-zh-hans 解决.

  7. Linux 上安装 Couchbase服务

    down: http://www.couchbase.com/downloads/ doc:  http://docs.couchbase.com/archive-index/ forums: htt ...

  8. invalid request block size: 4542 (max 4096)...skip引起的Nginx 502 Bad Geteway

    今天有用户报告了一个issue: 当他访问我们的网站时出现了以下错误: 但是我访问同样的地址却没有这个问题,连续访问多次,查看uWSGI日志发现出现以下ERROR: 原来是请求头的大小超出了uWSGI ...

  9. WINCRIS的使用

    附件下载:http://pan.baidu.com/s/1sj7EsOH 1.首先大家先到官网上下载自己的BIOS , 准备一个U盘格式化成FAT/FAT32格式. (网上说U盘的大小不要超过2G,这 ...

  10. 一个快速搜索下载jar包的网站

    在偶然的机会,我一个快速搜索下载jar包的网站.里面涵盖了所有的几乎全世界开源的jar包,感觉这个功能特别适合java.android开发者使用,共享出来給大家悄悄. 百度一下:manyjar,就可以 ...