タグ別アーカイブ: php

imagickを使ってpdfを画像に変換する

PHPのImagick(ImageMagick)を使ってPDFファイルを画像に変換することができます。

$imagick = new Imagick();

$imagick->readimage($pdf_file_name);

for ($i = 0; $i < $imagick->getImageScene(); $i++) {
  $imagick->setIteratorIndex($i);
  $imagick->setImageFormat('jpeg');
  $imagick->writeimage($image_file_path . '-page' . $i . '.jpg);
}

これ、結構リソース使うんですよね。ページ数の多いPDFを変換しようとしたら、memory_limitやmax_execution_timeに引っかかって…という経験ありませんか?

特定ページだけを画像化したい場合限定(1ページ目だけ変換したいとかありますよね?)ですが、次のコードでサクッとできます。

続きを読む imagickを使ってpdfを画像に変換する

PDOのプリペアドステートメントで実行するSQLを確認したい(?プレースホルダの場合)

モダンなフレームワークを使っていればこんなことで困ることもないんだろうけど、レガシーなオレオレフレームワークの面倒を見ないといけないこともあるよね。

そんな時はこんな感じでやるしかないんじゃないかな。

続きを読む PDOのプリペアドステートメントで実行するSQLを確認したい(?プレースホルダの場合)

pecl::imagickでサムネイルを作る時はstripImage()する癖をつけておいた方が無難かも

$img = new Imagick('src.jpg');
$img->thumbnailImage(80, 60);
$img->writeImage('dst.jpg');

これだとsrc.jpgはそれなりの大きさの画像だとして、80×60のサムネイルを作っているのになぜかファイルサイズが元画像とほぼ同じになってた。
(前はこれで良かったんだけど、いつからか仕様がかわった?)

$img = new Imagick('src.jpg');
$img->thumbnailImage(80, 60);
$img->stripImage();
$img->writeImage('dst.jpg');

としたらそれなりのファイルサイズになるようになった。
もしかしたら特定のバージョンのみで起こる現象なのかもしれないけど、普段からstripImage()する癖をつけておいた方が無難そう。

PEAR::Mailでのメール送信が遅い

PHP 5.3 PEAR::Mail 1.2.0 で、SMTPドライバを使って結構な数のメールを送る検証をしていたら、凄く遅くなるパターンに遭遇した。散々悩んだ挙句に見つけたのがこれ

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1176279911

ソースは読んでないけど、確かに1KB付近を境に性能が大きく変わることは確認できた(遅いパターンは3倍くらい時間がかかる)。

検証とはいえ「てすとテスト」みたいなのはやめようね。というね。。まぁでも1KB以下のメールをそれなりの数送る場合は他の方法を考えたほうが良いかもしれない。

PDOでMySQLに接続してプリペアードステートメントを使うと、クエリーキャッシュがきかないことがある

条件は

この二つの条件にあてはまる場合、プリペアードステートメントを使うとクエリーキャッシュがきかない。

続きを読む PDOでMySQLに接続してプリペアードステートメントを使うと、クエリーキャッシュがきかないことがある

CentOS 5.5(64bit) + Apache 2.2 + PHP 5.1でメモリー約1.7GBの壁

バッチ処理的なものを書いてたらぶち当たったのでメモ。

32bit環境だったらわかるんだけど、64bit環境でも部分的に32bitな部分が残ってるんだかなんだか、メモリーが約1.7GBしか確保できなくてエラーが出た。

大量にメモリーを使わないように書きなおして回避できたけど、なんだかちょっと納得行かない感じ。まぁそもそもそんなにメモリー使う実装はどうなのよ?というのもあるけど。。