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教程相关推荐

  1. python利用线程生成不同尺寸的缩略图

    利用线程生成缩略图: 读取当前路径下的png文件,在当前路径下生成6464,128128和32*32的缩略图. """ 利用线程生成缩略图 读取当前路径下的png文件,在 ...

  2. java url 缩略图_java根据url生成网页截图,缩略图 | 学步园

    public class ShotsPic extends JPanel { private static final long serialVersionUID = 1L; // 行分隔符 fina ...

  3. php dsa 签名,openssl使用DSA算法生成签名实例详解_PHP教程

    文章给大家介绍基于openssl使用DSA算法生成签名实例,生成签名方法很简单,我们需要懂得中间的原理就比较复杂了,大家一起来看看吧. 命令: openssl> dgst -dss1 -sign ...

  4. php ean13,php生成EAN_13标准条形码实例_PHP教程

    function EAN_13($code) { //一个单元的宽度 $lw = 2; //条码高 $hi = 100; // the guide code is no coding,is used ...

  5. php imagick 取得psd缩略图,PHP利用imagick读取PDF生成png缩略图的两种方法

    PHP利用imagick读取PDF生成png缩略图的两种方法 发表于2019-04-24 06:08| 次阅读| 来源网络整理| 作者session 摘要:PHP利用imagick读取PDF生成png ...

  6. 利用FFmpeg生成视频缩略图 2.1.8

    1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下.下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/D: ...

  7. php5 安装imagick,CentOS 6.5编译安装PHP拓展imagick

    源码编译安装PHP运行环境的好处就是可以按需添加拓展,相对灵活.由于项目用到imagick这个拓展,所以稍微了解了一下,并作了笔记.本文主要记录CentOS 6.5下编译imagick拓展. 预热篇: ...

  8. 利用OpenXml生成Word2007文档

    一.OpenXml简介 利用C#生成Word文档并非一定要利用OpenXml技术,至少可以使用微软提供的Office相关组件来编程,不过对于Office2007(确切的说是Word.Excel和Pow ...

  9. 利用OpenXml生成Word2007文档(转)

    转自:http://blog.csdn.net/francislaw/article/details/7568317 一.OpenXml简介 利用C#生成Word文档并非一定要利用OpenXml技术, ...

  10. 利用owc生成excel并且显示在页面

    主要利用OWC生成Excel,画表头和显示从数据库读出来的数据,然后显示在前台页面上,无需客户端安装office,只需要安装owc.一年以前写的,似乎很烦锁,哪位有高见请指教! 后面利用OWC操作EX ...

最新文章

  1. Apple的LZF算法解析
  2. HDU 1115 Lifting the Stone(求多边形重心)
  3. 现代浏览器的工作原理
  4. JavaWeb学习总结(十二):Session
  5. UVA1262Password(第K字典序)
  6. 决策树留一法python代码_ScikitLearn决策树算法类库使用小结
  7. iview中table里嵌套i-switch、input、select等
  8. drupal7权限控制之-如何访问未发表的node
  9. 基于python物流管理系统毕业设计-python实现快递价格查询系统
  10. Java深入理解深拷贝和浅拷贝区别
  11. 计算机上面的ms mr,电脑上的计算器,Mod,MC,MR,MS,M+,M-分别表示什么意思啊...
  12. 矩阵的转置与矩阵的逆
  13. linux下的office 速度慢,针对Libreoffice卡顿奇慢的怪病,这里有一味特效药
  14. 如何批量将 Word 文档转为 ePub 格式
  15. C++静态成员函数与静态成员变量
  16. 在线招聘市场强手如林,携AI入局的灵鸽会飞向何方?
  17. 相似对角化的意义(转载)
  18. Cisco之show ip arp 与 show mac-address-table
  19. 责备的近义词_验收测试:责备工具
  20. 修复苹果iOS 原生键盘遮挡input框

热门文章

  1. PHP实现查找msn联系人
  2. 计算机四级网络工程师需要看哪些书,计算机四级网络工程师考试教材
  3. mybatis 使用简单的增删查改
  4. Publish Junit test result report
  5. 尔雅 科学通史(吴国盛) 个人笔记及课后习题 2018 第三章 中古时代的欧洲和阿拉伯
  6. 2021年下半年软考系统集成项目管理工程师真题及答案解析
  7. powerdesigner 16.5 Could not Initialize JavaVM!
  8. 主板 B85 + 核显HD4600 , EFI 安装黑苹果
  9. 《安富莱嵌入式周报》第228期:2021.08.30--2021.09.05
  10. 最新win10系统下载64位