千家信息网

PHP+ImageMagick如何将PDF转成图片

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章将为大家详细讲解有关PHP+ImageMagick如何将PDF转成图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ImageMagick安装ImageMa
千家信息网最后更新 2025年11月13日PHP+ImageMagick如何将PDF转成图片

这篇文章将为大家详细讲解有关PHP+ImageMagick如何将PDF转成图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

ImageMagick安装

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

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

CentOS 7中安装

在CentOS中可以直接使用Yum进行安装,除了安装ImageMagick,还要安装它的两个依赖ImageMagick-develImageMagick-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通道,将所有图像合并为一层,如果不执行这些操作,转换出来的图像背景会是黑色的,如下图:


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

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

php有什么特点

1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象编程:PHP提供了类和对象。5、版本更新速度快。6、具有丰富的功能。7、可伸缩性。8、功能全面,包括图形处理、编码与解码、压缩文件处理、xml解析等。

关于"PHP+ImageMagick如何将PDF转成图片"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

图像 图片 文件 函数 命令 分辨率 功能 对象 格式 两个 参数 篇文章 脚本 处理 成功 主流 二进制 代码 体积 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库考试进程字段设计 计算机网络技术系个人简历 计算机网络技术和编程的区别 江苏正规软件开发质量保障 数据库中 数据列 汇总 软件开发基础知识 上海智能软件开发推荐咨询 绍兴常用网络技术 iis服务器拒绝了连接 电脑服务器机柜功率是多少 金山区人工智能应用软件开发优点 趋势科技网络安全专家 roblox代码服务器怎么进 湖南九鼎互联网科技有限公司 数据库专家职级晋升评审 网络技术与应用txt下载 长沙有哪些正规的软件开发公司 从百度搜索结果中爬取数据库 孚能科技工业互联网 视频存储服务器怎么连接 数据库中 数据列 汇总 网络技术研发发展状况 软件开发创业前景如何 网络工作室软件开发 每年网络安全宣传周 网络安全行业就业单位 软件开发服务费数量单位 辽宁省服务器代理商云主机 罗马尼亚 网络安全敏感 小姐姐服务器
0