1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PHP利用imagick生成组合缩略图 imagick缩略图

PHP利用imagick生成组合缩略图 imagick缩略图

时间:2023-07-15 21:29:27

相关推荐

PHP利用imagick生成组合缩略图 imagick缩略图

php教程|php手册

php,imagick,缩略图,php

php教程-php手册

PHP利用imagick生成组合缩略图,imagick缩略图

php 空间源码下载,ubuntu 录屏直播,python爬虫的效率,课表php,宁波seo基础lzw

先给大家炫下效果图,如果大家觉得还很满意,请继续往下阅读:

wpf listview 源码,vscode复制,ubuntu 驱动精灵,tomcat nutch,sqlite 多任务,访问远程mysql数据库服务器,有赞插件,java前端框架b,hadoop 爬虫,鞍山php,赣州seo公司,iis新建网站代码,网页导航 代码下载,ecshop绿色模板,css案例-新浪新闻页面,erp人力资源管理系统模块,我的 应用程序lzw

这里说的imagick 是 ImageMagick 在PHP下的扩展。使用pecl安装起来那叫一个轻松简单一条命令就搞定:

现代教务管理系统源码,ubuntu 修改鼠标样式,qt5爬虫,php连接php,seo优化发包lzw

复制代码 代码如下:

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[ o][x], $cfg[ o][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 => [ o => [ x => 0, y => 0 ],size => [width => $width,height => $height,]]];case 2:// | 0 | 1 |return [0 => [ o => [ x => 0, y => 0 ],size => [width => $width / 2,height => $height,]],1 => [ o => [ x => $width / 2, y => 0],size => [width => $width / 2,height => $height,]]];case 3:// | 0 | 1 |// | 2 | |return [0 => [ o => [ x => 0, y => 0 ],size => [width => $width / 2,height => $height / 2,]],1 => [ o => [ x => $width / 2, y => 0],size => [width => $width / 2,height => $height,]],2 => [ o => [ x => 0, y => $height / 2 ],size => [width => $width / 2,height => $height / 2,]],];default:// >= 4:// | 0 | 1 |// | 2 | 3 |return [0 => [ o => [ x => 0, y => 0 ],size => [width => $width / 2,height => $height / 2,]],1 => [ o => [ x => $width / 2, y => 0],size => [width => $width / 2,height => $height / 2,]],2 => [ o => [ x => 0, y => $height / 2 ],size => [width => $width / 2,height => $height / 2,]],3 => [ o => [ 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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。