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 ...
随机推荐
- django框架基础-ORM跨表操作-长期维护
############### 一对一跨表查询 ################ import os if __name__ == '__main__': os.environ.setde ...
- 十、RPC(远程过程调用)
相关概念 RPC,是Remote Procedure Call的简称,即远程过程调用.它是一种通过网络从远程计算机上请求服务,而不需要了解底层网络的技术.RPC的主要功用是让构建分布式计算更容易,在提 ...
- cs231n spring 2017 lecture4 Introduction to Neural Networks
1. Backpropagation:沿着computational graph利用链式法则求导.每个神经元有两个输入x.y,一个输出z,好多层这种神经元连接起来,这时候已知∂L/∂z,可以求出∂L/ ...
- webservice入门程序学习中经验总结
***第一步:创建客户端服务 1)创建一个服务接口 2)创建一个实现类实现接口 3)创建一个方法开启服务 这三步注意点:::实现类上必须添加@WebService标签 :::发布服务的时候用到的函数是 ...
- [LC] 81. Search in Rotated Sorted Array II
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- Java过滤器Filter的原理及配置_学习笔记
Filter中文意思为过滤器.顾名思义,过滤器可在浏览器以及目标资源之间起到一个过滤的作用.例如:水净化器,可以看成是生活中的一个过滤器,他可以将污水中的杂质过滤,从而使进入的污水变成净水. 对于WE ...
- Archlinux安装与出现的问题
arch的安装 arch的安装主要参考官网arch wiki,基本上按照Beginners' guide的步骤就可以安装,不过这里推荐用U盘刻录的方法来安装,我尝试过用硬盘安装的办法,还是感觉U盘刻录 ...
- jenkins使用(4)-发邮件
邮箱配置 邮件触发器:达到条件就会发邮件 对单独的服务设置邮件 系统设置如下 回到单个任务的设置 配置中的主题设置如下: 回到单个任务的设置 配置中如下: 选择工作空间中的一个文件 发送多个附件: 邮 ...
- mac上svn: This client is too old to work with working copy 问题的解决
安装svn时,提示This client is too old to work with working copy........原因:svn的版本过旧,安装1.8的svn即可.下面简要说明一些步骤: ...
- 在 mac osx 上安装OpenOffice并以服务的方式启动
OpenOffice是Apache基金会旗下的一款先进的开源办公软件套件,包含文本文档.电子表格.演示文稿.绘图.数据库等.包含Microsoft office所有功能.它不仅可以作为桌面应用供普通用 ...