[PHP+ImageMagick] PDF を画像に変換する (詳細な手順)

藏色散人
リリース: 2023-04-10 21:20:01
転載
5799 人が閲覧しました

ImageMagickのインストール

ImageMagickは、画像の作成、編集、合成を行うための無料ソフトウェアです。複数の形式のイメージを読み取り、変換、書き込みできます。画像の切り取り、色の置換、各種効果の適用、画像の回転、結合、文字、直線、多角形、楕円、曲線、画像に付随する拡大・回転。 ImageMagick はフリー ソフトウェアです: すべてのソース コードはオープンであり、自由に使用、コピー、変更、配布できます。GPL ライセンス契約に準拠しており、ほとんどのオペレーティング システムで実行できます。ImageMagick のほとんどの機能はコマンド ライン ツールから提供されます。

PHP で ImageMagick を使用するには、imagick 拡張機能をインストールする必要があります。imagickgd 拡張機能に似ており、主に画像処理に使用されますが、imagick の方が強力です。以下に、2 つの一般的な環境での imagick のインストール方法を簡単に紹介します。

CentOS 7 へのインストール

ImageMagick のインストールに加えて、Yum を使用して CentOS に直接インストールできます。 2 つの依存関係 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 コマンドは、PHP 関連情報を表示するために使用する関数
phpinfo() に似ています。


Docker のインストール

PHP の拡張機能をコンテナーにインストールするには、Github の docker-php-extension-installer を使用することをお勧めします。拡張機能の依存関係の問題を解決し、拡張機能のインストール後に不要なファイルを自動的に削除できるシェル スクリプト。このスクリプトを 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 オブジェクトに設定するだけです。この関数は、イメージの読み取りまたはイメージの作成前に呼び出す必要があります。

この関数は、水平解像度と垂直解像度という 2 つのパラメータを受け取ります。デフォルト値は 72*72 です。画像のアスペクト比を維持するには、これら 2 つのパラメータの値は同じである必要があります。デフォルト値で変換された画像は十分に鮮明ではありません。値を 2 倍または 3 倍にすることをお勧めしますが、サイズは画像も大きくなります。

$im->setCompressionQuality(100);
ログイン後にコピー

画像の圧縮品質を設定します。デフォルト値は 0 です。渡されるパラメータ値は 1 ~ 100 である必要があります。JPG 形式の画像の場合、値が小さいほど、画像のボリュームが小さくなります。ただし、PNG 画像の場合、この結論は当てはまらないようです。値が 90 未満の場合、画像サイズが大きくなるため、PNG 画像形式に変換する場合はデフォルト値のままにしてください。

$im->readImageBlob($fileContent);
ログイン後にコピー

PDF ファイルのバイナリ コンテンツを直接ロードするか、

readImage($filename) 関数を使用して保存された PDF ファイルを読み取ることができます。

$im->setImageFormat('jpg');
ログイン後にコピー

生成する画像の形式を設定します (

jpgpng など)。

$im->setImageBackgroundColor('white');
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
ログイン後にコピー

画像の背景色を白に設定し、画像のアルファ チャネルを削除し、すべての画像を 1 つのレイヤーに結合します。これらの操作を実行しない場合、変換された画像の背景は次のように黒になります。


header("Content-type: image/png");
echo $im->getImageBlob();
ログイン後にコピー

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

推荐:《PHP视频教程

以上が[PHP+ImageMagick] PDF を画像に変換する (詳細な手順)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!