Gimp 2.6以降でExifデータの一部が、書き換えられてしまう。(Gimp 2.2 までは、この様なことはなかったので、ずっと古いバージョンを使ってきた)
Gimp 2.6, 2.8の場合
古いバージョンを使い続けるのは情報弱者のように見られるため、Gimp 2.6で「Exifデータが書き換えられない」ように変更する時の手法のメモ。
ソースコードの入手し、ビルドに必要なライブラリを揃える
# apt-get source gimp # apt-get build-dep gimp # cd gimp-2.6.7
ソフトウエア名と日時をオリジナルのまま保つように、次の場所を修正
/* set software to "GIMP" and include the version number */ if ((entry = exif_content_get_entry (exif_data->ifd[EXIF_IFD_0], EXIF_TAG_SOFTWARE))) { /***** ここからコメントアウト const gchar *name = "GIMP " GIMP_VERSION; entry->data = (guchar *) g_strdup (name); entry->size = strlen (name) + 1; entry->components = entry->size; ここまでコメントアウト *****/ } /* * set the date & time image was saved * note, date & time of original photo is stored elsewwhere, we * aren't losing it. */ if ((entry = exif_content_get_entry (exif_data->ifd[EXIF_IFD_0], EXIF_TAG_DATE_TIME))) { /* small memory leak here */ /***** ここからコメントアウト entry->data = NULL; exif_entry_initialize (entry, EXIF_TAG_DATE_TIME); ここまでコメントアウト *****/ }
この状態で、ビルドを行う。なお、file-jpeg
が生成された時点でCtrl + C
を押してビルドを中止しても構わない。
# ./configure # make
出来上がった、file-jpeg プラグインを、オリジナルのものに上書きする。
# sudo cp plug-ins/file-jpeg/.libs/file-jpeg /usr/lib/gimp/2.0/plug-ins/
依存ライブラリ等のバージョン不一致エラー
たとえば、次のようなエラーが出た場合
# ./configure
〜 中略 〜
checking for GEGL... no
configure: error: Package requirements (gegl-0.2 >= 0.2.0) were not met:
No package 'gegl-0.2' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables GEGL_CFLAGS
and GEGL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
システムには gegl-0.3 がインストールされていて、そちらを使いたいが、configureスクリプトには gegl-0.2が指定されている。 (バージョンチェックは、次のように行う)
# pkg-config --exists --print-errors "gegl-0.3 >= 0.2.0"
configureファイル自体をシステムに合わせて再作成するのは、次のようにする
# aclocal # automake # autoconf
関連記事
・GimpのExifデータ上書きGimp 2.10の場合
Ubuntu 18.04にGimp 最新版のversion 2.10 を、PPA(otto-kesselgulasch)を利用してインストールした場合...
ソースパッケージを解凍し、./configure
コマンドを実行すると、libmypaint-devのバージョンが違うということでエラーになる。(1.4.0がインストールされているが、必要なのは1.3.0)
インストール及びソースパッケージのダウンロード後、PPAのリポジトリを無効化する。
そして、【オリジナルのUbuntu18.04のリポジトリ】からlibmypaint-dev(1.3.0) を再インストールする。
そして、
# aclocal # automake # autoconf
を行った後に、ソースコードを改変する
GimpMetadata *
gimp_image_metadata_save_prepare (gint32 image_ID,
const gchar *mime_type,
GimpMetadataSaveFlags *suggested_flags)
{
GimpMetadata *metadata;
g_return_val_if_fail (image_ID > 0, NULL);
g_return_val_if_fail (mime_type != NULL, NULL);
g_return_val_if_fail (suggested_flags != NULL, NULL);
*suggested_flags = GIMP_METADATA_SAVE_ALL;
metadata = gimp_image_get_metadata (image_ID);
if (metadata)
{
GDateTime *datetime;
〜 略 〜
g_snprintf (buffer, sizeof (buffer),
"%d:%02d:%02d %02d:%02d:%02d",
g_date_time_get_year (datetime),
g_date_time_get_month (datetime),
g_date_time_get_day_of_month (datetime),
g_date_time_get_hour (datetime),
g_date_time_get_minute (datetime),
g_date_time_get_second (datetime));
/******* この部分をコメントアウト
gexiv2_metadata_set_tag_string (g2metadata,
"Exif.Image.DateTime",
buffer);
gexiv2_metadata_set_tag_string (g2metadata,
"Exif.Image.Software",
PACKAGE_STRING);
ここまでコメントアウト ********/
gimp_metadata_set_pixel_size (metadata,
image_width, image_height);
gimp_image_get_resolution (image_ID, &xres, &yres);
gimp_metadata_set_resolution (metadata, xres, yres,
gimp_image_get_unit (image_ID));
〜 略 〜
そして、ソースコードをビルドして、出来上がったライブラリファイルを/usr/libにコピー
./configure make sudo cp libgimp/.libs/libgimpui-2.0.so.0.1000.14 /usr/lib