• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > PHP+ImageMagick将PDF转成图片(步骤详解)

PHP+ImageMagick将PDF转成图片(步骤详解)

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了PHP+ImageMagick,PDF转成图片等相关知识,希望对您有所帮助

这篇文章带大家学习PHP+ImageMagick将PDF转成图片的方法,有详细的步骤教程,希望对大家有所帮助。

ImageMagick安装

ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统,ImageMagick的大多数功能的使用都来源于命令行工具。

PHP中要使用ImageMagick,需要安装imagick扩展,imagick与gd扩展类似,主要用于图像处理,但是imagick的功能更强大。下面简单介绍imagick在两种常用环境中的安装方法。

CentOS 7中安装

在CentOS中可以直接使用Yum进行安装,除了安装ImageMagick,还要安装它的两个依赖ImageMagick-devel和ImageMagick-perl。

yum install -y ImageMagick ImageMagick-devel ImageMagick-perl

接着使用pecl安装扩展。找到PHP安装目录下的pecl,例如PHP安装在/usr/local/php74目录中,则pecl一般在/usr/local/php74/bin目标中,执行命令:

/usr/local/php74/bin/pecl install imagick

即可使用pecl自动下载并安装ImageMagick,最后在php.ini中添加

extension=imagick.so

即可启用扩展。

如果你需要检查一下扩展有没有安装成功,可以执行一下命令

php -m|grep imagick

如果输出imagick,说明扩展安装成功。


题外话 :如果你不知道PHP使用的是哪个php.ini配置文件,可以执行一下以下命令

php74 -i|grep ini

找到”Loaded Configuration File”那行,就知道PHP使用的是哪个配置文件了。php -i命令

作用类似于我们使用phpinfo()函数查看PHP的相关信息。


Docker安装

容器中的PHP安装扩展,推荐使用Github上的docker-php-extension-installer,这是一个Shell脚本,可以帮我们解决扩展的依赖问题,安装扩展后还会自动清除没用的文件。我们只需要在Dockerfile中加入这个脚本即可,下面是官方的示例:

FROM php:7.2-cli# 从Github上下载docker-php-extension-installer脚本ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/# 添加可执行权限并安装扩展RUN chmod +x /usr/local/bin/install-php-extensions && \    install-php-extensions gd xdebug imagick

这样构建出来的镜像就安装好所需要的扩展了。

题外话:在国内网络环境下,使用docker-php-extension-installer安装扩展经常会出现超时问题,建议使用外网的VPS构建镜像,上传到DockerHub或者其它私有仓库后,再拉到本地网络使用。可使用便宜的良心云,或者Vultr这种支持按时计费的VPS。


PDF转图片

代码示例:

// 实例化imagick对象$im = new imagick();$im->setResolution(150, 150);$im->setCompressionQuality(100);$im->readImageBlob($fileContent);$im->setImageFormat('jpg');$im->setImageBackgroundColor('white');$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); header("Content-type: image/jpeg");echo $im->getImageBlob();

代码解读:

$im->setResolution(150, 150);

用于设置图像的分辨率。这个函数并不改变图像的实际分辨率,只是在读取或创建图像之前将其设置在Imagick对象中,这个函数需要在读取图像或创建图像之前调用。

这个函数接收两个参数,分别是横向分辨率和纵向分辨率,默认值是72*72。为了保持图像的宽高比,这两个参数值应该一样,默认值转换出来的图像不够清晰,建议使用两倍或三倍值,但同时图片的大小也会变大。

$im->setCompressionQuality(100);

设置图像的压缩质量,默认值为0;传入的参数值应为1-100,对于JPG格式图片,值越小,图像体积越小,同时清晰度也较低;但是对于PNG图片,这个结论貌似不成立,当值小于90时,图片体积反而越大,所以在转换为PNG图片格式时,保持默认值即可。

$im->readImageBlob($fileContent);

直接加载PDF文件的二进制内容,也可以使用readImage($filename)函数读取保存好的PDF文件。

$im->setImageFormat('jpg');

设置要生成的图像的格式,如jpg,png等,

$im->setImageBackgroundColor('white');$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);

设置图像背景色为白色,去掉图像的alpha通道,将所有图像合并为一层,如果不执行这些操作,转换出来的图像背景会是黑色的,如下图:


PHP+ImageMagick将PDF转成图片(步骤详解)


header("Content-type: image/png");echo $im->getImageBlob();

获取转换生成图像的二进制数据,输出到客户端供下载;如果需要保存到文件,可以使用writeImage($filename)函数。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PHP+ImageMagick将PDF转成图片(步骤详解)

相关文章

  • 2022-04-29PHPcms远程图片本地化增加图片类型和后缀的方法
  • 2022-04-29PHPCMS系统mysql优化教程
  • 2022-04-29HTML5 canvas如何绘制酷炫能量线条效果(附代码)
  • 2022-04-29PhotoShop滤镜制作简单的冰晶字效果教程
  • 2022-04-2925个你可能不知道的PS常用快捷键
  • 2022-04-29Photoshop制作颓废效果的金属立体字教程
  • 2022-04-29大型企业网站的十大问题详解
  • 2022-04-29laravel-admin怎么使用wang-editor富文本插件
  • 2022-04-29PHP7如何使用set_error_handler和set_exception_handler处理异常机制
  • 2022-04-29PHP如何删除Array数组指定key

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 详解thinkphp6如何通过全局中间件解决跨域问题
    • curl获取结果乱码的解决方法
    • PS制作非常逼真的针织吊牌
    • 详解Laravel前端工程化之mix
    • Javascript如何获取用户输入的值
    • 手把手教你使用ThinkPHP+phpExcel导入导出Excel数据
    • PHP以正则表达式验证手机号码
    • PhotoShop CS5打造木栈道婚纱外景照片后期合成教程
    • 详解PHP中的addcslashes()函数
    • CorelDraw制作手提袋和礼品盒

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有