PHP 解像度変更について質問です。


画像解像度を変更したくネットにて調べていたところ、
下記のURLを見つけました。

http://gac.kir.jp/11/20040

この中に記載されていたプログラムを実行したところ正常に200dpiへ変更されました。



$data = file_get_contents( "$jpgfile" );
$pos_APP0 = strpos( $data, chr(0xFF).chr(0xE0) );

// 解像度の文字列 200dpi
$Resolution = chr(0x01).chr(0x00).chr(0xC8).chr(0x00).chr(0xC8);

// 置き換え
$outdata = substr( $data, 0, ($pos_APP0+11) );
$outdata .= $Resolution;
$outdata .= substr( $data, ($pos_APP0+16) );

file_put_contents( "$outjpgfile", $outdata );


私は300dpiに変換したいと考えているのですが、

$Resolution = chr(0x01).chr(0x00).chr(0xC8).chr(0x00).chr(0xC8);

の部分の書き換えが分かりません。
他のサイトからの引用ではございますが、スレッドが終了していたため、
こちらで質問させていただきました。
ご回答よろしくお願いいたします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2009/10/28 16:25:45
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:tdoi No.1

回答回数174ベストアンサー獲得回数75

ポイント20pt
$Resolution = chr(0x01).chr(0x01).chr(0x2C).chr(0x01).chr(0x2C);

でJPEGの解像度タグを300に書き換えることはできます。

元のコードがちょっと不親切ですが、以下のように書くと分かりやすいですかね?

$xResolution = chr(0x01) . chr(0x2C); // 0x012C = 300
$yResolution = chr(0x01) . chr(0x2C); // 0x012C = 300
$outdata = substr($data, 0, ($pos_APP0+12));
$outdata .= $xResolution;
$outdata .= $yResolution;
$outdata .= substr($data, ($pos_APP0 + 16));

ただ、参考URLの議論にもなっていますが、解像度のタグを書き換えただけなので、解像度の高い画像にはなっていないですから、別の方法を考えられた方がいいと思います。


何かの参考になれば。

id:clab_yasu

ご回答ありがとうございました。

上記で試してみます。

2009/10/28 16:24:54
id:goog20090901 No.2

回答回数637ベストアンサー獲得回数17

ポイント50pt

$Resolution = chr(0x01).chr(0x01).chr(0x2C).chr(0x01).chr(0x2C);

id:clab_yasu

ご回答ありがとうございました。

バッチリ思っていた通りです。

ありがとうございました。

2009/10/28 16:25:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません