Exif情報の編集 – プログラミング – Home

通知
すべてクリア

[解決済] Exif情報の編集


momo
 momo
(@momo)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

Exif情報の一つで、撮影日時を任意に編集するようにしたいのですが、
下記のようにコーディングしたのですが、メモリー上では更新されるのですが、
ファイルには反映されません。別ファイルとして保存すれば反映されるのですが、
どうしたらよいでしょうか?

CHAR Value[] = 2007:03:14 21:40:00;

Image * pImage = Image::FromFile(FilePath.AllocSysString());

pImage->RemovePropertyItem(PropertyTagExifDTOrig);

PropertyItem* propertyItem = new PropertyItem;

propertyItem->id = PropertyTagExifDTOrig;
propertyItem->length = 20;
propertyItem->type = PropertyTagTypeASCII;
propertyItem->value = Value;
pImage->SetPropertyItem(propertyItem);

delete propertyItem;


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

Exif情報を変えるだけなら保存しても画質は変わらないので
上書きしてしまってもよいのではないでしょうか。


返信引用
momo
 momo
(@momo)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

subaruさん、お返事ありがとうございます。

別ファイルに保存する方法はわかるのですが、
上書きするにはどのようにしたらよいでしょうか?

教えて下さい。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>別ファイルに保存する方法はわかるのですが、
>上書きするにはどのようにしたらよいでしょうか?

そういえばImage::FromFileで読み込んだ場合はオブジェクトが
破棄されるまでファイルがロックされてしまうのでした。
ちょっとめんどうですが、入力ファイルを一旦IStreamに読み込んで
Image::FromStreamを使用してオブジェクトを作成するように
してみてください。


返信引用
momo
 momo
(@momo)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

Streamに読み込んで、

GetEncoderClsid(Limage/jpeg, &encoderClsid);
pImage->Save(FilePath.AllocSysString(), &encoderClsid);

上記のようにして上書きし、Exifを編集することができました。

しかし、ファイルサイズが若干小さくなっていたのですが、
やはり、画像の劣化が発生したのでしょうか?

ディスク上のサイズは同じなのですが...

サイズ:2,877,748 バイト→2,877,706 バイト
ディスク上のサイズ:2,879,488 バイト→2,879,488 バイト


返信引用
ぬふや
 ぬふや
(@ぬふや)
ゲスト
結合: 18年前
投稿: 34
 

そのぐらいの変化でしたらむしろ、
・操作しなかったほかの情報が削除されたとか、
・元ファイルに有ったパティングが削除されたとか、
・データの格納形式が変更されたとか、
・元ファイルの終端にJpegとは関係の無いゴミデータが付いていたとか、
だと思いますが。

負荷逆なので、出力したファイルをもう一度入力に使ってもサイズが変化するよう
なら劣化してるかも知れません。
バイナリエディタで見てみるってのも一つの手だと思いますが…Jpegだと無意味か
も知れないですね。

それと、ディスク上のサイズは普通関係しませんので省いてもかまいませんよ。


返信引用
momo
 momo
(@momo)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

ぬふやさん、ご回答ありがとうございました。

2回目以降は、データサイズに変化はありませんでした。
やはり、ごみ的なデータが削除された可能性が高いと思います。
とっても参考になりました。ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました