- ベストアンサー
PING JPEGファイルのExif規格のコメント部を読み込み・書き込みするプログラムソース
以前、表記処理のできるフリーソフトをフリーソフトを教えていただいた者です。 http://oshiete1.goo.ne.jp/qa3911520.html プログラムの中で計算した結果を、画像ファイルのコメント部に書き込むプログラムをC言語で作成しようと思っています。そこで、 int WriteComment(FILE *fd、char *コメント文字列) int ReadComment(FILE *fd、char *コメント文字列) のような関数を内部で使いたいのですが、このような関数ありませんか?あるいは、自作するための参考になるようなお手本となるソースリストありませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 「libpng」 http://www.libpng.org/ 「libexif」 http://libexif.sourceforge.net/ 一応参考程度に。 以下PNGからコメントを表示する static void dump(png_textp p) { const char* pszCompress = p->compression == PNG_TEXT_COMPRESSION_zTXt ? "あり" : "なし"; ::printf("[キーワード: %s][コメント: %s][圧縮: %s]\n", p->key, p->text, pszCompress); } int ReadPNG(FILE* pf) { png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if(png_ptr == NULL) { return 0; } png_infop info_ptr = png_create_info_struct(png_ptr); if(info_ptr == NULL) { png_destroy_read_struct(&png_ptr, NULL, NULL); return 0; } if(setjmp(png_jmpbuf(png_ptr))) { png_destroy_read_struct(&png_ptr, &info_ptr, NULL); return 0; } png_init_io(png_ptr, pf); png_set_sig_bytes(png_ptr, 0); png_read_png(png_ptr, info_ptr, 0, NULL); //ココでテキスト部を参照する for(int i = 0; i < info_ptr->num_text; ++i) dump(&info_ptr->text[i]); png_read_end(png_ptr, info_ptr); png_destroy_read_struct(&png_ptr, &info_ptr, NULL); return 1; } int main() { FILE* pf = fopen("PNGファイル名", "rb"); ReadPNG(pf); fclose(pf); return 0; } 以下JPEGからEXIFを表示する int main() { ExifData* p = exif_data_new_from_file("JPEGファイル名"); exif_data_dump(p); exif_data_free(p); return 0; }
その他の回答 (2)
- machongola
- ベストアンサー率60% (434/720)
こんばんは。御礼頂き感謝いたします。 >>ところで、Exif規格のコメント部を読み書きするだけでも、libpngを使う場合、zlibが必要なのでしょうか? はい。 libpngの様々な箇所でzlibの関数に依存している為、結局の所zlibをリンクする必要が有ります。 試しにzlibを外してみましたが、至る所でリンクエラーだらけです。
- hidebun
- ベストアンサー率50% (92/181)
はずれているかもしれませんが…。 http://www.exiv2.org/index.html http://www.exiv2.org/doc/exifcomment_8cpp-example.html
お礼
回答ありがとうございます。 なかなか良さそうなページご紹介ありがとうございます。 ダウンロードして、読んでみます。 ありがとうございます。
お礼
回答ありがとうございます。 こちらも、なかなか良さそうなページですね。 ご紹介ありがとうございます。 自分で探しても、うまく探せなかったので、本当に助かります。 ダウンロードして、読んでみます。 ところで、Exif規格のコメント部を読み書きするだけでも、libpngを使う場合、zlibが必要なのでしょうか? もしご存知なら、お教えください。