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 ...
随机推荐
- 前端-js-长期维护
############### JS简介和JS引入 ################ <!DOCTYPE html> <html lang="en" ...
- CentOS 6.5 搭建DNS服务器
1.安装bind yum install -y bind 2.修改named.conf主配置文件 vim /etc/named.conf 图中圈中的地方改为any 3.配置正向.反向解析 vim /e ...
- Mybatis-Plus的分页插件
使用的是:Mybatis-Plus的分页插件https://baomidou.gitee.io/mybatis-plus-doc/#/?id=%E7%AE%80%E4%BB%8B 1.Mapper.j ...
- Nginx笔记总结十一:Nginx重写规则指南
依赖PCRE库,需要安装pcre,最多循环10次,超过后返回500错误, 1. rewrite模块指令 break:完成当前设置的重写规则,停止执行其他的重写规则 if: if () { ...
- js 实现排序算法 -- 快速排序(Quick Sort)
原文: 十大经典排序算法(动图演示) 快速排序 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整 ...
- Java 判断字符串是否包含某个字符
// 判断不为静态栏目的文章 if (e.getCategory().getName().indexOf("静态") == -1) { articleList2.add(e); } ...
- 编程原理—如何用javascript代码解决一些问题
关于编程,我最喜欢的就是解决问题.我不相信有谁天生具有解决问题的能力.这是一种通过反复锻炼而建立并维持的能力.像任何练习一样,有一套指导方针可以帮助你更有效地提高解决问题的能力.我将介绍5个最重要的软 ...
- python 同步与异步的性能区别及实例
同步与异步的性能区别 1. #coding:utf-8 import gevent def task(pid): """ Some non-deterministic ...
- hiho一下:Beautiful String
hiho一下:Beautiful String 记不清这是 hiho一下第几周的题目了,题目不难,不过对于练习编程,训练思维很有帮助.况且当时笔者处于学习算法的早期, 所以也希望刚接触算法的同学能多去 ...
- mongodb游标快照
示例代码 1. 初始数据 > db.snapshot_test.find() { "_id" : ObjectId("560ba37c694895b2de42254 ...