「平成」を感じるもの

以前、表記処理のできるフリーソフトをフリーソフトを教えていただいた者です。
http://oshiete1.goo.ne.jp/qa3911520.html
プログラムの中で計算した結果を、画像ファイルのコメント部に書き込むプログラムをC言語で作成しようと思っています。そこで、
int WriteComment(FILE *fd、char *コメント文字列)
int ReadComment(FILE *fd、char *コメント文字列)
のような関数を内部で使いたいのですが、このような関数ありませんか?あるいは、自作するための参考になるようなお手本となるソースリストありませんか?

A 回答 (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;
}
    • good
    • 0
この回答へのお礼

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

こちらも、なかなか良さそうなページですね。
ご紹介ありがとうございます。
自分で探しても、うまく探せなかったので、本当に助かります。
ダウンロードして、読んでみます。
ところで、Exif規格のコメント部を読み書きするだけでも、libpngを使う場合、zlibが必要なのでしょうか?
もしご存知なら、お教えください。

お礼日時:2008/09/17 21:38

 こんばんは。

御礼頂き感謝いたします。

>>ところで、Exif規格のコメント部を読み書きするだけでも、libpngを使う場合、zlibが必要なのでしょうか?
 はい。
 libpngの様々な箇所でzlibの関数に依存している為、結局の所zlibをリンクする必要が有ります。
 試しにzlibを外してみましたが、至る所でリンクエラーだらけです。
    • good
    • 0
    • good
    • 0
この回答へのお礼

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

なかなか良さそうなページご紹介ありがとうございます。
ダウンロードして、読んでみます。
ありがとうございます。

お礼日時:2008/09/17 21:30

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


おすすめ情報