[メモ] Imagickを使って、PHPでPDFをJPGに変換

前回の投稿から3週間近くも経過してしまいました。
実は、FBではちらっとご報告しておりましたが、1週間前から仕事の関係で名古屋に駐在しております。
期間は最低2ヶ月程度、というものすごく曖昧な感じで、先行きが不透明な感じというあたりと絡んでいるのですが、まぁ、久しぶりの一人暮らし気分でぼちぼちやっております。
そんなこんなでバタバタしてブログの更新まで手が回らなかったわけですが、こんな近況報告だけしても仕方がないので、仕事関連の備忘録をまとめておきます。



今、仕事で、Linuxサーバ上でTiffまたはPDFの形式でインプットされるファイルを、JPGに変換して出力するプログラムを扱っています。
他の方が作った既存のプログラムなのですが、この変換で使っているのが、PHPの拡張機能であるImagickを使って実現しています。
これの性能向上を目指して色々と調査したのですが、この組み合わせがとにかく難物で…ということで、いろいろ調べた結果をまとめます。

プログラムをいじるにあたって、まず、参考にしたURLがこちら。


特に最後のサイトは、resize処理実行時のfilterオプションの意味がよくわからなかったので、その違いをひと目で把握でき、非常に重宝しました。

さて、他にもImagick+PHPで探してもらえれば色々と情報が出てきますので、ここではとりあえず、他のサイトでは情報が見つからず、私がテストしてわかった事実をひとつだけ、上げておきます。

◆インプットするファイル形式によって、使用するメソッドを使い分ける必要がある。
今作業している案件では画像の解像度やサイズを適切に指定する必要があったため、そのあたりを中心にいろいろテストを重ねました。
その結果、Imagickで用意されている似たような処理をするためのメソッドが、実は、インプットするファイルの種類によって使い分けが必要なことがわかりました。
例えば、画像解像度を設定するメソッドとして、 Imagick::setImageResolutionImagick::setResolution が用意されています。
解説を一見しただけでは、setResolutionは、画像を読み込む前に解像度をセットしておくためのメソッドで、setImageResolutionは、画像を読み込んだあとに解像度を変更するためのメソッドのように見えます。
しかし、私がテストした範囲内では、インプットファイルがTiffファイルの場合、setResolutionを実行しても指定の解像度は有効にならず、画像を読み込んだあとでsetImageResolutionを実行する必要がありました。
また、PDFファイルの場合はこの逆で、setResolutionで画像読み込み前に解像度を指定する必要があり、読み込み後にいくらsetImageResolutionを実行しても、解像度を変更することができませんでした。
他にも、Tiffでは有効なsetSizeがPDFでは効かず、PDFではイメージ読み込み後にresizeImageを実行する必要がありました。
私の扱う案件ではTiffとPDFをだけだったのでこれ以上のテストはしていませんが、他にも、ファイル形式によってメソッドがうまく動いたり動かなかったりするパターンがあるのではないかと思いますので、ご自分の環境でうまく動かないメソッドがある場合には、同種の処理を行う他のメソッドに切り替えてみたり、インプットファイルによってコールするメソッドを変更するような処理に組立て直すと、うまく行くことがあるかもしれません。


ということで、誰か他にも同じようなことで悩んでいる方の参考になれば幸いです。




そうそう。
名古屋に来るにあたって、前回紹介したG808用に、OCNモバイルONEのSIMを契約しました。

OCN モバイル ONE マイクロSIM 月額900円(税抜)~
NTTコミュニケーションズ
2013-08-29

amazon.co.jpで買う
Amazonアソシエイト by OCN モバイル ONE マイクロSIM 月額900円(税抜)~ の詳しい情報を見る / ウェブリブログ商品ポータル



それと、住んでいるのが会社が借りたレオパレスなんですが、有線ネットしか無いということで、ポータブル無線LANルーターも購入しました。

BUFFALO 11n/g/b 300Mbps ポータブル無線LAN親機 ブラック WMR-300
バッファロー
2013-05-02

amazon.co.jpで買う
Amazonアソシエイト by BUFFALO 11n/g/b 300Mbps ポータブル無線LAN親機 ブラック WMR-300 の詳しい情報を見る / ウェブリブログ商品ポータル



次回はこのあたりのレビューなど書けたらいいなと。

ではでは~~。

=======================気になる情報

KDDI au プリペイド方式で手軽にタブレットが利用できる新サービス「LTE データプリペイド」発表、11月4日開始

KAZAM、厚み 5.15mm 世界最薄とする4.8インチスマートフォン「Tornado 348」発表、価格299ユーロ(約4万円)

Google、USBによる物理的セキュリティー・キーを提供開始

特別永住資格は「在日特権」か?

“2万円台”でSIMフリーLTE+高精細液晶の8型Androidタブレット――「Venue 8」は買いか? (1/3)

この記事へのコメント

この記事へのトラックバック

  • [レビュー] Buffalo WMR-300/S と OCN モバイルONE

    Excerpt: さて、前回のエントリーでお伝えしたとおり、2週間前から名古屋に来ております。 会社が借りたマンスリーマンションに滞在しているわけですが、この2週間の間に不足しているものもひと通り買い揃え、なんとか生.. Weblog: ヤメ記者SEの徒然なるままに… racked: 2014-11-09 14:10

テーマ別記事