php imagick 缩略图,PHP利用imagick生成组合缩略图,imagick缩略图_PHP教程
PHP利用imagick生成组合缩略图,imagick缩略图
先给大家炫下效果图,如果大家觉得还很满意,请继续往下阅读:
这里说的imagick 是 ImageMagick 在PHP下的扩展。使用pecl安装起来那叫一个轻松简单一条命令就搞定:
复制代码 代码如下:
sudo pecl install imagick
(扩展装好后还是要在php.ini中加上extension=imagick.so,然后记得重启apache或php-fpm服务。)
最近有个需求是要把多张图片组合起来生成缩略图,刚好用用这个强大的imagick扩展。
这个需求是要这样生成缩略图:
1.如果有1张图片,就直接生成这张图片的缩略图;
2.如果有2张图片,则一张在左边一张在右边,各一半;
3.如果有3张图片,则两张左边平均分配,一张独占右边;
4.如果有4张图片,则像田字格一样平均分配空间;
5.更多张图片,则只取前4张,按田字格方式生成缩略图。
这规则还真不少,不过还不算太过复杂,很快搞出来了:
namespace \clarence\thumbnail;
class Thumbnail extends \Imagick
{
/**
* @param array $images
* @param int $width
* @param int $height
* @return static
* @throws ThumbnailException
*/
public static function createFromImages($images, $width, $height){
if (empty($images)){
throw new ThumbnailException("No images!");
}
$thumbnail = new static();
$thumbnail->newImage($width, $height, 'white', 'jpg');
$thumbnail->compositeImages($images);
return $thumbnail;
}
public function compositeImages($images){
$imagesKeys = array_keys($images);
$compositeConfig = $this->calcCompositeImagesPosAndSize($images);
foreach ($compositeConfig as $index => $cfg){
$imgKey = $imagesKeys[$index];
$img = new \Imagick($images[$imgKey]);
$img = $this->makeCompositeThumbnail($img, $cfg);
$this->compositeImage($img, self::COMPOSITE_OVER, $cfg['to']['x'], $cfg['to']['y']);
}
}
protected function makeCompositeThumbnail(\Imagick $img, $cfg){
$img->cropThumbnailImage($cfg['size']['width'], $cfg['size']['height']);
return $img;
}
protected function calcCompositeImagesPosAndSize($images){
$width = $this->getImageWidth();
$height = $this->getImageHeight();
switch(count($images)){
case 0:
throw new ThumbnailException("No images!");
case 1:
// | 0 |
return [
0 => [
'to' => [ 'x' => 0, 'y' => 0 ],
'size' => [
'width' => $width,
'height' => $height,
]
]
];
case 2:
// | 0 | 1 |
return [
0 => [
'to' => [ 'x' => 0, 'y' => 0 ],
'size' => [
'width' => $width / 2,
'height' => $height,
]
],
1 => [
'to' => [ 'x' => $width / 2, 'y' => 0],
'size' => [
'width' => $width / 2,
'height' => $height,
]
]
];
case 3:
// | 0 | 1 |
// | 2 | |
return [
0 => [
'to' => [ 'x' => 0, 'y' => 0 ],
'size' => [
'width' => $width / 2,
'height' => $height / 2,
]
],
1 => [
'to' => [ 'x' => $width / 2, 'y' => 0],
'size' => [
'width' => $width / 2,
'height' => $height,
]
],
2 => [
'to' => [ 'x' => 0, 'y' => $height / 2 ],
'size' => [
'width' => $width / 2,
'height' => $height / 2,
]
],
];
default:
// >= 4:
// | 0 | 1 |
// | 2 | 3 |
return [
0 => [
'to' => [ 'x' => 0, 'y' => 0 ],
'size' => [
'width' => $width / 2,
'height' => $height / 2,
]
],
1 => [
'to' => [ 'x' => $width / 2, 'y' => 0],
'size' => [
'width' => $width / 2,
'height' => $height / 2,
]
],
2 => [
'to' => [ 'x' => 0, 'y' => $height / 2 ],
'size' => [
'width' => $width / 2,
'height' => $height / 2,
]
],
3 => [
'to' => [ 'x' => $width / 2, 'y' => $height / 2],
'size' => [
'width' => $width / 2,
'height' => $height / 2,
]
],
];
}
}
}
用个试试:
复制代码 代码如下:
$thumbnail = \clarence\thumbnail\Thumbnail::createFromImages($srcImages, 240, 320);
$thumbnail->writeImage($outputDir."/example.jpg");
以上内容给大家介绍了PHP利用imagick生成组合缩略图的相关知识,希望对大家有所帮助!
您可能感兴趣的文章:PHP使用imagick读取PDF生成png缩略图的两种方法
php使用imagick模块实现图片缩放、裁剪、压缩示例
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
PHP中使用Imagick读取pdf并生成png缩略图实例
PHP中使用imagick生成PSD文件缩略图教程
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
http://www.bkjia.com/PHPjc/1101297.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1101297.htmlTechArticlePHP利用imagick生成组合缩略图,imagick缩略图 先给大家炫下效果图,如果大家觉得还很满意,请继续往下阅读: 这里说的imagick 是 ImageMagick...
php imagick 缩略图,PHP利用imagick生成组合缩略图,imagick缩略图_PHP教程相关推荐
- python利用线程生成不同尺寸的缩略图
利用线程生成缩略图: 读取当前路径下的png文件,在当前路径下生成6464,128128和32*32的缩略图. """ 利用线程生成缩略图 读取当前路径下的png文件,在 ...
- java url 缩略图_java根据url生成网页截图,缩略图 | 学步园
public class ShotsPic extends JPanel { private static final long serialVersionUID = 1L; // 行分隔符 fina ...
- php dsa 签名,openssl使用DSA算法生成签名实例详解_PHP教程
文章给大家介绍基于openssl使用DSA算法生成签名实例,生成签名方法很简单,我们需要懂得中间的原理就比较复杂了,大家一起来看看吧. 命令: openssl> dgst -dss1 -sign ...
- php ean13,php生成EAN_13标准条形码实例_PHP教程
function EAN_13($code) { //一个单元的宽度 $lw = 2; //条码高 $hi = 100; // the guide code is no coding,is used ...
- php imagick 取得psd缩略图,PHP利用imagick读取PDF生成png缩略图的两种方法
PHP利用imagick读取PDF生成png缩略图的两种方法 发表于2019-04-24 06:08| 次阅读| 来源网络整理| 作者session 摘要:PHP利用imagick读取PDF生成png ...
- 利用FFmpeg生成视频缩略图 2.1.8
1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下.下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/D: ...
- php5 安装imagick,CentOS 6.5编译安装PHP拓展imagick
源码编译安装PHP运行环境的好处就是可以按需添加拓展,相对灵活.由于项目用到imagick这个拓展,所以稍微了解了一下,并作了笔记.本文主要记录CentOS 6.5下编译imagick拓展. 预热篇: ...
- 利用OpenXml生成Word2007文档
一.OpenXml简介 利用C#生成Word文档并非一定要利用OpenXml技术,至少可以使用微软提供的Office相关组件来编程,不过对于Office2007(确切的说是Word.Excel和Pow ...
- 利用OpenXml生成Word2007文档(转)
转自:http://blog.csdn.net/francislaw/article/details/7568317 一.OpenXml简介 利用C#生成Word文档并非一定要利用OpenXml技术, ...
- 利用owc生成excel并且显示在页面
主要利用OWC生成Excel,画表头和显示从数据库读出来的数据,然后显示在前台页面上,无需客户端安装office,只需要安装owc.一年以前写的,似乎很烦锁,哪位有高见请指教! 后面利用OWC操作EX ...
最新文章
- Apple的LZF算法解析
- HDU 1115 Lifting the Stone(求多边形重心)
- 现代浏览器的工作原理
- JavaWeb学习总结(十二):Session
- UVA1262Password(第K字典序)
- 决策树留一法python代码_ScikitLearn决策树算法类库使用小结
- iview中table里嵌套i-switch、input、select等
- drupal7权限控制之-如何访问未发表的node
- 基于python物流管理系统毕业设计-python实现快递价格查询系统
- Java深入理解深拷贝和浅拷贝区别
- 计算机上面的ms mr,电脑上的计算器,Mod,MC,MR,MS,M+,M-分别表示什么意思啊...
- 矩阵的转置与矩阵的逆
- linux下的office 速度慢,针对Libreoffice卡顿奇慢的怪病,这里有一味特效药
- 如何批量将 Word 文档转为 ePub 格式
- C++静态成员函数与静态成员变量
- 在线招聘市场强手如林,携AI入局的灵鸽会飞向何方?
- 相似对角化的意义(转载)
- Cisco之show ip arp 与 show mac-address-table
- 责备的近义词_验收测试:责备工具
- 修复苹果iOS 原生键盘遮挡input框
热门文章
- PHP实现查找msn联系人
- 计算机四级网络工程师需要看哪些书,计算机四级网络工程师考试教材
- mybatis 使用简单的增删查改
- Publish Junit test result report
- 尔雅 科学通史(吴国盛) 个人笔记及课后习题 2018 第三章 中古时代的欧洲和阿拉伯
- 2021年下半年软考系统集成项目管理工程师真题及答案解析
- powerdesigner 16.5 Could not Initialize JavaVM!
- 主板 B85 + 核显HD4600 , EFI 安装黑苹果
- 《安富莱嵌入式周报》第228期:2021.08.30--2021.09.05
- 最新win10系统下载64位