• ベストアンサー

PHPのGDライブラリについて

掲題の件について質問です。 いま、PHPのGDライブラリを用いて大量の既存のイメージファイル(JPEG)から各三種類ほどのサムネイルを作成しているのですが一点問題があります。 既存のイメージを縮小してサムネイルを作成しているのですが、この元となる画像は 解像度72dpiの画像となるのですが、GDを用いて作成されたサムネイルは96dpiの解像度として作成されるのです。 故合ってdpiは72でなければなりません。 このPHPのGDライブラリで画像のDPIの指定は出来ないでしょうか? 識者の方、よろしければご教授ください。 お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

ざっと検証してみましたが、Exifの問題みたいですね GDの設定もみてみましたがちょっとパラメータがみつからなかったので 厳しいかも、imageMagickに切り替えるのが手っ取り早いでしょう。 書き方の差を吸収するには、前回も書きましたがPEARライブラリを 使うとよいでしょう。 また、Exifの29バイト目あたりからのバイナリデータをいじれば いけそうですが、こればっかりはあまりお勧めはできません。

その他の回答 (4)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.5

php online manual のuser note にdpi 変更法が有ります。 No2回答の方のあまりお薦めしないとあった、バイト列を直接書き換える方法ではありますが、関数にでもしておけば、あとは呼び出すだけですし。 固定で 72 dpi 指定にするなら、元画像のexif を読む必要もないので、これだけでよいのでは? http://jp.php.net/manual/ja/function.imagejpeg.php#83347

回答No.4

はじめまして。 ご期待の回答ではないのですが、phpでサムネイルを作成してみたら、72dpiで作成されたので報告します。 <?php $im = imagecreatefromjpeg("./*****.jpg");       $width0=350; $width = ImageSX($im); $height = ImageSY($im); $new_image0 = ImageCreateTrueColor($width0, $height*($width0/$width)); $new_image1 = ImageCreateTrueColor($width0, $height*($width0/$width)); ImageCopyResized($new_image0,$im,0,0,0,0,$width0,$height*($width0/$width),$width,$height); ImageCopyResampled($new_image1,$im,0,0,0,0,$width0,$height*($width0/$width),$width,$height); imagejpeg($new_image0,"./im0.jpg",0,100); imagejpeg($new_image1,"./im1.jpg",0,100); ?> こんな感じで作成しました。元画像72dpi、作成された画像も72dpiでした。PHOTOSHOPCS5で確認しました。 私のPCはVista32Bit、PHPのバージョンは5.4.0(vc9)、ライブラリはphp_gd2.dllです。 解像度の変更はできないみたいですが、72dpiで作成できれば当面のお役には立てるかなと思いまして…

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ざっと検証してみましたが、Exifの問題みたいですね GDでは厳しいかも、imageMagickに切り替えるのが手っ取り早いでしょう。 差を吸収するには、前回も書きましたがライブラリを使うことになります。 Exifの29バイト目あたりからのバイナリデータをいじれば いけそうですが、あまりお勧めはできません。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

サムネイルにdpiを指定するくだりがよくわからないのですが 縦か横のサイズを指定してjpegを吐き出すのではいけないのでしょうか? サムネイルをつくるだけならPEAR::image-transformあたりが 使いやすかったです。 ただGDよりimagemagicの方がきれいにサムネイルがつくれますね

参考URL:
http://pear.php.net/manual/ja/package.images.image-transform.php
1000vicki
質問者

補足

さっそくのお答えありがおうございます。 要望のあるサムネイルのdpiが72dpiと指定されているのです。 実際に、印刷などする場合をのぞきPC上でdpiは問題ではないですが そういう、条件なので・・・。 GDで作ったサムネイルも画像のプロパテイから概要タブで実際の dpiが確認できるので、確認したところ96dpiとなっていたので・・・。 なんとかして72dpiのサムネイルを作りたいと思っているのです。