PHPのImagickでPDFを読み込んでPNGに変えるときの注意点

ようやくそこそこ綺麗に出力できるようになったのでメモ。

Imagickでpdfを読み込む前に、解像度を設定しておく必要があります。
その解像度を設定するメソッドは、setresolution($x, $y)です。

$imagick = new Imagick();
$imagick->setresolution(144, 144); // ここで解像度設定!!
$imagick->readimage($pdf_path);
$page_count = $imagick->getimagescene(); // ページ数を取得
for($i = 0; $i <= $page_count; $i++) {
  $imagick->setimageindex($i);
  $imagick->setimageformat('png');
  $imagick->writeimage(png_image_path($i)); // 連番を作る関数を適当に作る
}
$imagick->destroy();

これでphpのImageMagick(Imagick)でpdfを画像に変換しても綺麗に出るようになりました。
解像度を上げすぎると、ファイルサイズがでかくなるのでそこだけ注意が必要です。


カテゴリー PHP | タグ   | パーマリンク

コメント・トラックバック一覧

  1. 松田 says:

    PDFファイルのページ数を、$imagick->getimagescene()で取得することができません。
    いろいろなサイトに同様の方法が記載してありますが、小生の環境(Linux CentOS5、Php5.3.3
    imagick(3.1.2) Imagimagick(6.5.4-7 2014-02-10)では、どの複数ページのPDFでも取得できません。どなたかご教授いただけないでしょうか??

  2. Tanaka says:

    $imagick->getimagescene()の代わりに
    $imagick->getNumberImages() はいかがでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です