電子書籍の厳選無料作品が豊富!

phpのvarは5.2.5

GDライブラリを使ってアップしています

jpg、gif、pngをアップロードするときに画像の容量を軽くしたいです
画像についているメタ情報を削除する方法はありますか?
ImageMagickでは画像のEXIF 情報や余分なコメント領域を削除できますがそれと同じようなことをしたいです

よろしくお願いします

A 回答 (3件)

補足のソースについて、


リサイズ時のcall_user_func(image{$mime} で、imagejpegや、imagepng を指定しているなら、ファイル名しか指定してないので、default 圧縮率で保存されますし、メタ情報は保持されません。
リサイズしないで、ファイル移動している方は、元のファイルのままメタ情報などがついています。こちらのメタ情報を削りたければ、$imgに読み込んで、resizeは行わずに、imagejpegや、imagepngで保存すれば、メタ情報は失われます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました
すっきりしました

お礼日時:2013/07/26 10:09

gdはメタ情報に対応していません。

読むのも書きだすことも出来ません。
よって、gdで読み込んで、gdのimageipeg() や imagepng() で保存すると、メタ情報は失われます。
それで、もし、ファイルサイズが大きくなったというなら、品質設定が元のファイルより大きくなっているのでしょう。元の品質設定を読むのもできないので、同じ品質にしたければImageMagickを使うなりしないとならないでしょう。元と違っても良いなら、引数で品質指定は可能だけど。
    • good
    • 0
この回答へのお礼

お答え頂きありがとうござます
GDでファイルを保存するとメタデータは付かないとゆうことでしょうか?
下記のようになっています

// リサイズの必要があれば縦横比を維持してリサイズ
$new_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($new_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if (!call_user_func("image{$mime}", $new_img, "{$image_dir}/{$name}")) {
throw new Exception('サムネイルの保存に失敗しました。');
}
} else {
// リサイズの必要がなければそのままファイルを移動
if (!move_uploaded_file($tmp_name, "{$image_dir}/{$name}")) {
throw new Exception('画像の保存に失敗しました。');
}
}

お礼日時:2013/07/21 18:38

仮にメタ情報が付いているとしてもごく僅かなので、削除しても軽くするのに意味ないです。



ファイルサイズを小さくするのは、
・ピクセル数を減らす(縮小する)
・画質を下げる(jpg,png)
しかないです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
photshopでweb用の画像で保存したときに画像のメタデータを削除すると、100kbの画像が60kbくらいになっているので大きかったです
画質を下げるのは画像が小さいので考えていません

お礼日時:2013/07/19 23:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!