Heim  >  Artikel  >  Backend-Entwicklung  >  [PHP+ImageMagick] PDF in Bild konvertieren (detaillierte Schritte)

[PHP+ImageMagick] PDF in Bild konvertieren (detaillierte Schritte)

藏色散人
藏色散人nach vorne
2022-01-19 16:44:505788Durchsuche

ImageMagick ist eine kostenlose Software zum Erstellen, Bearbeiten und Synthetisieren von Bildern. Es kann Bilder in mehreren Formaten lesen, konvertieren und schreiben. Bildschneiden, Farbaustausch, Anwendung verschiedener Effekte, Bilddrehung, Kombination, Text, gerade Linien, Polygone, Ellipsen, Kurven, Erweiterung und Drehung von Bildern. ImageMagick ist freie Software: Der gesamte Quellcode ist offen und kann frei verwendet, kopiert, geändert und verteilt werden. Es entspricht der GPL-Lizenzvereinbarung und kann auf den meisten Betriebssystemen ausgeführt werden.

Um ImageMagick in PHP zu verwenden, müssen Sie die Erweiterung imagick installieren, die der Erweiterung gd ähnelt und hauptsächlich für verwendet wird Bildverarbeitung, aber imagick ist leistungsfähiger. Im Folgenden finden Sie eine kurze Einführung in die Installationsmethoden von imagick in zwei gängigen Umgebungen.

Installation in CentOS 7

In CentOS können Sie zusätzlich zur Installation von ImageMagick auch Yum verwenden Installieren Sie zwei davon. Hängt von ImageMagick-devel und ImageMagick-perl ab. 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);
Dann verwenden Sie pecl, um die Erweiterung zu installieren. Suchen Sie pecl im PHP-Installationsverzeichnis. Wenn PHP beispielsweise im Verzeichnis /usr/local/php74 installiert ist, befindet sich normalerweise pecl / Führen Sie im Ziel usr/local/php74/bin den folgenden Befehl aus:
header("Content-type: image/png");
echo $im->getImageBlob();

, um pecl zum automatischen Herunterladen und Installieren von ImageMagick zu verwenden. und schließlich in php

rrreee

zu .ini hinzufügen, um die Erweiterung zu aktivieren. [PHP+ImageMagick] PDF in Bild konvertieren (detaillierte Schritte)

Wenn Sie überprüfen müssen, ob die Erweiterung erfolgreich installiert wurde, können Sie den Befehl 🎜rrreee🎜 ausführen. Wenn imagick ausgegeben wird, bedeutet dies, dass die Erweiterung erfolgreich installiert wurde. 🎜🎜🎜Exkurs: Wenn Sie nicht wissen, welche php.ini-Konfigurationsdatei PHP verwendet, können Sie den folgenden Befehl ausführen🎜rrreee🎜, um die „Geladene Konfigurationsdatei“ zu finden „OK, Sie werden wissen, welche Konfigurationsdatei PHP verwendet. Der Befehl php -i
ähnelt der Art und Weise, wie wir die Funktion phpinfo() verwenden, um PHP-bezogene Informationen anzuzeigen. 🎜🎜

🎜🎜Docker-Installation

🎜Um Erweiterungen für PHP im Container zu installieren, wird empfohlen, docker-php-extension-installer auf Github zu verwenden. Dies ist ein Shell-Skript, das uns bei der Lösung der Erweiterung helfen kann Beheben Sie das Abhängigkeitsproblem und installieren Sie es. Nicht verwendete Dateien werden nach der Erweiterung ebenfalls automatisch gelöscht. Wir müssen dieses Skript nur zur Docker-Datei hinzufügen. Das Folgende ist das offizielle Beispiel: 🎜rrreee🎜Auf dem auf diese Weise erstellten Image werden die erforderlichen Erweiterungen installiert. 🎜🎜🎜Exkurs: In der heimischen Netzwerkumgebung treten häufig Timeout-Probleme auf, wenn Erweiterungen mit docker-php-extension-installer installiert werden. Es wird empfohlen, einen externen VPS zu verwenden Um das Image zu erstellen, laden Sie es auf DockerHub oder andere private Warehouses hoch und ziehen Sie es dann zur Verwendung in das lokale Netzwerk. Sie können eine günstige Conscience-Cloud oder einen VPS wie Vultr verwenden, der die Zeitabrechnung unterstützt. 🎜🎜🎜🎜🎜PDF zu Bild🎜

🎜🎜Codebeispiel:

rrreee

Codeinterpretation:

rrreee🎜 wird verwendet, um die Auflösung des Bildes festzulegen. Diese Funktion ändert nicht die tatsächliche Auflösung des Bildes, sondern legt sie lediglich im Imagick-Objekt fest, bevor das Bild gelesen oder erstellt wird. Diese Funktion muss vor dem Lesen oder Erstellen des Bildes aufgerufen werden.
Diese Funktion erhält zwei Parameter, nämlich horizontale Auflösung und vertikale Auflösung. Der Standardwert ist 72*72. Um das Seitenverhältnis des Bildes beizubehalten, sollten die Werte dieser beiden Parameter gleich sein. Das durch den Standardwert konvertierte Bild ist nicht klar genug. Es wird empfohlen, den doppelten oder dreifachen Wert zu verwenden Auch die Größe des Bildes wird größer. 🎜🎜rrreee🎜Stellen Sie die Komprimierungsqualität des Bildes ein. Der Standardwert ist 0. Der übergebene Parameterwert sollte 1-100 sein. Bei Bildern im JPG-Format gilt: Je kleiner der Wert, desto kleiner die Bildgröße und desto geringer die Klarheit. Für PNG-Bilder scheint diese Schlussfolgerung jedoch nicht zuzutreffen. Wenn der Wert kleiner als 90 ist, ist die Bildgröße größer. Behalten Sie daher beim Konvertieren in das PNG-Bildformat einfach den Standardwert bei. 🎜🎜rrreee🎜 Laden Sie direkt den Binärinhalt der PDF-Datei, oder Sie können die Funktion readImage($filename) verwenden, um die gespeicherte PDF-Datei zu lesen. 🎜🎜rrreee🎜Legen Sie das Format des zu generierenden Bildes fest, z. B. jpg, png usw., 🎜🎜rrreee🎜Stellen Sie die Hintergrundfarbe des Bildes auf Weiß ein , entfernen Sie den Alphakanal des Bildes und alle Bilder werden in einer Ebene zusammengeführt. Wenn Sie diese Vorgänge nicht ausführen, ist der Hintergrund des konvertierten Bildes schwarz, wie unten gezeigt: 🎜🎜🎜🎜
header("Content-type: image/png");
echo $im->getImageBlob();

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

推荐:《PHP视频教程

Das obige ist der detaillierte Inhalt von[PHP+ImageMagick] PDF in Bild konvertieren (detaillierte Schritte). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen