PHP 创建缩略图
一、成比例缩小图像
<?php /* 创建缩略图 */ $file = __DIR__.'/button.png';
$scale = 0.5; // 比例 $image = ImageCreateFromPNG($file);
$thumbnail = ImageCreateTrueColor(
ImageSX($image) * $scale,
ImageSY($image) * $scale
); // 保留透明度
ImageColorTransparent($thumbnail,
ImageColorAllocateAlpha($thumbnail, 0, 0, 0, 127)
);
ImageAlphaBlending($thumbnail, false);
ImageSaveAlpha($thumbnail, true); // 缩小 & 复制
ImageCopyResampled($thumbnail, $image, 0, 0, 0, 0,
ImageSX($thumbnail), ImageSY($thumbnail), ImageSX($image), ImageSY($image)
); header('Content-type: image/png');
ImageJpeg($thumbnail);
ImageDestroy($image);
ImageDestroy($thumbnail);
说明:
ImageCopyResampled() 函数用于重采样拷贝部分图像并调整大小
ImageColorAllocateAlpha() 函数用于为一副图像分配颜色 + Alpha
ImageAlphaBlending() 函数设定图像的混色模式
二、缩小为固定大小的矩形
<?php /* 创建固定大小的缩略图 */ $file = __DIR__.'/button.png';
$w = 50;
$h = 20; // 图像
$original = ImageCreateFromPNG($file);
$thumbnail = ImageCreateTrueColor($w, $h); // 保留透明设置
ImageColorTransparent($thumbnail,
ImageColorAllocateAlpha($thumbnail, 0, 0, 0, 127)
);
ImageAlphaBlending($thumbnail, false);
ImageSaveAlpha($thumbnail, true); // 缩小 & 复制
$x = ImageSX($original);
$y = ImageSY($original);
$scale = min($x / $w, $y / $h); ImageCopyResampled($thumbnail, $original,
0, 0, ($x - ($w * $scale)) / 2, ($y - ($h * $scale)) / 2,
$w, $h, $w * $scale, $h * $scale
); header('Content-type: image/png');
ImageJpeg($thumbnail);
ImageDestroy($image);
ImageDestroy($thumbnail);
说明:
该方法会从图像的中心成比例地修剪出尽可能大的矩形,需要计算原图和缩略图宽度和高度之比,找出其中较小的值。
从图像中心减去矩形的一般,得出在原图中的偏移量:($x - ($w * $scale)) / 2 和 ($y - ($h * $scale)) / 2
参考:
<PHP Cookbook>3'rd
PHP 创建缩略图的更多相关文章
- php 使用GD库上传图片以及创建缩略图
php 使用GD库上传图片以及创建缩略图 GD库是PHP进行图象操作一个很强大的库. 先在php.ini里增加一行引用:extension=php_gd2.dll 重启apache.做一个测试页 ...
- 使用GDI+轻松创建缩略图
Gdi+ 还是相当好用的. 1> Image保存图像,需要一个CLSID的参数,它可以这样获得: int GetEncoderClsid(const WCHAR* format, ...
- Win+PHP+IECapt完整实现网页批量截图并创建缩略图
最近在开发一个本地互联网应用的项目,为了增加用户体验,需要在搜索结果左侧显示如图一所示的某个网站的缩略图效果,在网上不停地百度谷歌了一上午后,发现大多数实现少量截图还是可以的,如果大批量的截图总会在中 ...
- c# 创建缩略图
/// <summary> /// 创建缩略图 /// </summary> /// <param name="srcFileName">< ...
- JavaScript with Image:创建缩略图
当图片很大,直接把图片从Server下载到浏览器上看是一种很不明智的做法,浪费了服务器的资源,网络带宽和客户端的资源.所以,通常Server和Client之间会传输缩略图,只有当Client请求某张图 ...
- python创建缩略图和选择轮廓效果
# -*- encoding:utf-8 -*- ''' 改变颜色 --- 颜色反转''' from PIL import Image nest = Image.open("D:\\tk.j ...
- 使用 Amazon S3 触发器创建缩略图
使用 Amazon S3 触发器创建缩略图 环境 centos (注意,必须是Linux环境) node12.x 安装教程 curl -sL https://rpm.nodesource.com/se ...
- scrapy下载图片到自己的目录,创建缩略图,存储入库
环境和工具:python2.7,scrapy 实验网站:http://www.27270.com/tag/333.html 爬去所有兔女郎图片,下面的推荐需要过滤 逻辑:分析网站信息,下载图片和入库 ...
- JS创建缩略图
<script language="javascript"> //显示缩略图 function DrawImage(ImgD,width_s,height_s){ /* ...
随机推荐
- UVA2322
题目:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- HDU 5023 A Corrupt Mayor's Performance Art 线段树区间更新+状态压缩
Link: http://acm.hdu.edu.cn/showproblem.php?pid=5023 #include <cstdio> #include <cstring&g ...
- time和datetime时间戳---python
time模块 time模块提供各种操作时间的函数 说明:一般有两种表示时间的方式: 1.时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的 2.以数 ...
- python3 黑板客爬虫闯关游戏(二)
第二关猜登录密码,需要用到urllib.request和urllib.parse 也很简单,给代码 import urllib.request as ur import urllib.parse as ...
- Linux From Scratch - Version 7.7-systemd (中文)
Linux From Scratch - Version 7.7-systemd: https://linux.cn/lfs/LFS-BOOK-7.7-systemd/index.html
- 关于Promise模式 整理中。。。
http://blog.csdn.net/womendeaiwoming/article/details/49849055 研究了几天Promise模式,因为在项目里也遇到了所谓的“回调陷阱”,就是多 ...
- js 中 substring() 和 substr() 提取字符
提取字符串substring() substring() 方法用于提取字符串中介于两个指定下标之间的字符. 语法: stringObject.substring(startPos,stopPos) ...
- aes加密C语言
/** * \file aes.h * * \brief AES block cipher * * Copyright (C) 2006-2010, Brainspark B.V. * * This ...
- oracle数据库创建后要做的事情
在SQL Plus工具中(oracle自带)用conn /as sysdba登录数据库. 一:先新建用户 create user test01 identified by test02(test01为 ...
- C++静态库与动态库
C++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一 ...