php制作缩略图
PHP制作缩略图
1、制作缩略图的函数
imagecopyresampled(dest,src,dx,dy,sx,sy,dw,dh,sw,sh)
说明:
dest 目标画布
src 原图(要缩略的图片)
dx,dy 目标画布上的一个点
sx,sy 原图上的一个点
dw,dh 画布的 宽高
sw,sh 原图的宽高
从src原图上以sx,sy为左上角,取宽为sw,高为sh的区域,放在dest画布上,以dx,dy为左上角,宽为dw,高为dh的区域。
2、制作的原理
生成缩略图,关键的是如何计算缩放比率。
1、画布的高/画布的宽>原图的高/原图的宽
也就是下图这种情况: 缩放比率 = 新图宽度 / 原图宽度

2、原图的高/原图的宽>画布的高/画布的宽
也就是下图这种情况:缩放比率 = 新图高度 / 原图高度

3、具体代码
function thumb($file,$dw,$dh,$path){//这四个参数分别是1、要缩略的图片,2、画布的宽(也就是你要缩略的宽)3、画布的高(也就是你要缩略的高),4、保存路径)
//获取用户名图
$srcImg=$this->getImg($file);//调用下面那个函数,实现根据图片类型来创建不同的图片画布
//获取原图的宽高
$infoSrc=getimagesize($file);//这个getimagesize()是php里面的系统函数用来获取图片的具体信息的
$sw=$infoSrc[0];//获取要缩略图片的宽
$sh=$infoSrc[1];。。获取要缩略的图片的高
//创建缩略图画布
$destImg=imagecreatetruecolor($dw, $dh);
//为缩略图填充背景色
$bg=imagecolorallocate($destImg,250,250,250);
imagefill($destImg,0,0,$bg);
//计算例缩放的尺寸
if($dh/$dw>$sh/$sw){
$fw=$dw;
$fh=$sh/$sw*$fw;
}else{
$fh=$dh;
$fw=$fh*$sw/$sh;
}
//居中放置
$dx=($dw-$fw)/2;
$dy=($dh-$fh)/2;
//创建缩略图
imagecopyresampled($destImg, $srcImg, 0, 0, 0, 0 ,$fw, $fh,$sw, $sh);
$baseName='thumb_'.basename($file);//给缩略的图片命名,basename()是系统内置函数用来获取后缀名的
$savePath=$path.'/'.$baseName;//设置缩略图片保存路径
imagejpeg($destImg,$savePath)//把缩略图存放到上一步设置的保存路径里
}
function getImg($file){//这是以一个动态创建图片画布的函数(根据具体的图片类型创相应类型的画布)
$info=getimagesize($file);
$fn=$info['mime'];//获得图片类型;
switch($fn){
case 'image/jpeg'://如果类型是imag/jpeg就创建jpeg类型的画布
$img=imagecreatefromjpeg($file);
break;
case 'image/gif':
$img=imagecreatefromgif($file);//如果类型是gif就创建gif类型的画布
case 'image/png':
$img=imagecreatefrompng($file);//如果类型是png就创建png类型的画布
break;
}
return $img;//返回画布类型
}
php制作缩略图的更多相关文章
- 制作缩略图java工具类
import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.File ...
- [UE4]制作缩略图
一.创建一个专门用来做缩略图的角色CameraCharacter,不需要实体模型. 二.Auto Possess Player设置为“Player 0” 三.重力比例改成0(这样在天上的时候就不会往下 ...
- django 上传图片、使用PIL制作缩略图并保存到sea的storage
上传图片解析: SAE的设置指引如下: 处理用户上传文件 在setttings.py中添加以下配置. # 修改上传时文件在内存中可以存放的最大size为10m FILE_UPLOAD_MAX_MEMO ...
- 制作Html标签以及表单、表格内容
制作Html一般用DW(......),Html全称为(Hyper Text Markup Language 超文本标记语言) 文本就是平常电脑上的文本文档,只能存储文字,而超文本文档可以存储音乐 ...
- 使用ThinkPHP实现生成缩略图及显示
首先了解父类Image.class.php(ThinkPHP/Library/Think/Image.class.php)中的一些函数 1:open() 打开被处理的图片 2:thumb() 生成缩略 ...
- PHP生成缩略图(3)--封装类
前台php代码 <?php require_once 'img_thumb.class.php'; $image = new ImgLib(); //源图路径 $src_path='E:/wam ...
- PHP根据图片制作缩略图
php中制作缩略图的方法也很简单,是用imagecopyresampled方法根据源图制作一个小一点的图片,来看代码check_image_addthumbs.php <?php //修改图片效 ...
- VC++基于CXImage库实现缩略图
一般的图像处理软件都对读入程序的图像文件建一个缩略图的列表,像ACDSee那样.笔者最近在做一个图像处理的项目,处理的原始数据就是图像文件.从项目一开始就想做一个缩略图,但一直苦于技术水平有限,且时间 ...
- php表单和缩略图处理类是什么样呢
<?php//封装一个表单验证类//中文验证.邮箱验证.电话号码.手机.QQ.身份证.(由字母.数字.下划线组成,不能以数字开头)header('content-type:text/html;c ...
随机推荐
- windows安装fdfs_client-py-master.zip 出现 error: Microsoft Visual C++ 14.0 is required.
背景:学习django+fdfs+nginx时碰见的问题,笔记本电脑的虚拟机ubuntu实在卡到怀疑人生,所以django装在windows,ubuntu只开启fdfs+nginx服务.于是就有在wi ...
- HDU1556 Color the ball [线段树模板]
题意:区间修改序列值,最后输出. //hdu1166 #include<iostream> #include<cstdio> #include<cstring> # ...
- python学习笔记(10)函数(二)
(函数的参数&递归函数) 一.函数的参数 Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数,使得函数定义出来的接口,不但能处 ...
- CocoaPods 安装和使用 - darcy_tang 的博客
最近换了新机器,重新搭建了开发环境,其中当然包括 CocoaPods. 装完顺便更新下 CocoaPods 安装文档. 正文 安装 CocoaPods 是用 ruby 实现的,要想使用它首先需要有 r ...
- Spring MVC及与structs MVC对比
一.Spring MVC MVC: Model + View + Controller(数据模型+视图+控制器) 三层架构: Presentation tier + Application tier ...
- Java开发面试常见问题合集
次面试事故 面试官:你看过哪些源码?我:都挺熟悉的面试官:对hashMap了解程度怎么样?面试官:那你能讲讲 HashMap的实现原理吗?面试官:HashMap什么时候会进行 rehash?面试官:结 ...
- JavaScript 事件代理
转自:http://www.cnblogs.com/silence516/archive/2009/09/03/delegateEvent.html 如果你想给网页添加点JavaScript的交互性, ...
- 求最长公共子序列-DP问题
Longest common subsequence problem The longest common subsequence (LCS) problem is the problem of fi ...
- 默认的Settings.xml文件(无修改过)-Maven
Tip: 当什么都不作修改时,默认是从Maven中央仓库进行下载,https://repo.maven.apache.org/maven2. 打开maven源码下的lib文件夹,找到maven-mod ...
- 良知VS野心,苹果为何要翻新手机?
前不久,苹果在大中华区推出了iPhone和iPad换机服务,消息一经发出便引发了果粉们的狂欢,那些丢弃在抽屉里的iPhone4S们看上去终于有着落了,也更坚定了"我是果粉,我骄傲" ...