ブログ

画像に記録されているExif情報を、投稿時にOpenPNE側で除去したい

『技術サポートでは、どのような対応をしているか』
皆様に具体的に知っていただきたく、実際の対応例をご紹介致します。

※問合せ内容、および、回答内容は、一部抜粋にて掲載しております。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【問い合わせ内容】

画像に記録されている位置情報等のExif情報を
画像を投稿をする際に、OpenPNE側で除去(削除)することはできないでしょうか。
特にスマートフォンからの画像投稿において、改善されると助かります。

(サポートプラン120契約中、OpenPNE3.8.x利用検討中のお客様)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

【回答内容】※メール抜粋※

残念ながら、現在のOpenPNEの仕様では、投稿された画像からExif情報
(位置情報や撮影日時などを含む)を意図的に削除するような処理は導入されておりません。

暫定対応ではありますが、Exif情報を削除する方法をご案内いたします。

OpenPNE.yml の use_imagemagick が 0 または 1 の場合については、
特別な設定無しに Exif 情報が除去されていることが確認できました。
これは画像の出力に使用する libgd が Exif 情報に対応していないための挙動ですが、
あくまで意図的に Exif 情報を除去するための機能ではないため
今後も libgd が Exif 情報を除去する保障はありません。

なお、use_imagemagick が 2 に設定されている場合は Exif 情報が保持されたままの状態で画像が出力されるため、本メールに添付のパッチを適用した上で OpenPNE.yml に、以下の記述を追加することで Exif 情報を除去することが出来ます。
ーーーーーーーーーーーーーーーーー
# 画像から Exif 情報を除去する
# 写真の撮影情報などが含まれている Exif 情報を画像から取り除きます。
# この設定は use_imagemagick が 2 の場合にのみ動作します。
# use_imagemagick が 0 または 1 の場合はこの設定に関係なく画像のメタデータは除去されます。
imagemagick_strip_exif: true
ーーーーーーーーーーーーーーーーー

[補足]
use_imagemagick が 0 の場合は全ての画像に libgd のみを使用する設定となります。
1 は GIF 画像に対してのみ ImageMagick を使用し、それ以外の画像には libgd を使用する設定です。
(ImageMagick は GIF アニメーションを保持したまま縮小を行えるため)
2 を指定すると全ての画像に ImageMagick が使用されます。

OpenPNE本体への機能として組み込むことはまだお日にちがかかりますが、以上の方法をご検討いただけたら幸いに存じます。
何かご不明な点などございましたら、お気軽に問い合わせください。

【パッチの内容】

diff --git a/config/OpenPNE.yml.sample b/config/OpenPNE.yml.sample
index 0883676..0712944 100644
--- a/config/OpenPNE.yml.sample
+++ b/config/OpenPNE.yml.sample
@@ -167,6 +167,12 @@ use_imagemagick: 0
 imagemagick_path: '/usr/bin/convert'
 #imagemagick_path: '"C:\Program Files\ImageMagick-6.2.5-Q16\convert"'
 
+# 画像から Exif 情報を除去する
+#   写真の撮影情報などが含まれている Exif 情報を画像から取り除きます。
+#   この設定は use_imagemagick が 2 の場合にのみ動作します。
+#   use_imagemagick が 0 または 1 の場合はこの設定に関係なく画像のメタデータは除去されます。
+imagemagick_strip_exif: false
+
 # 画像生成クラス設定 (Configuration of class for image-generating)
 #   この設定を有効にすると、 use_imagemagick の設定を無視して任意のクラスで画像を生成します。
 #   (If this configuration is enabled, OpenPNE generates image by using the specified class avoid "use_imagemagick")
diff --git a/lib/plugins/sfImageHandlerPlugin/lib/image/generator/sfImageGeneratorIM.class.php b/lib/plugins/sfImageHandlerPlugin/lib/image/generator/sfImageGeneratorIM.class.php
index 8df0d8a..5f19a2d 100644
--- a/lib/plugins/sfImageHandlerPlugin/lib/image/generator/sfImageGeneratorIM.class.php
+++ b/lib/plugins/sfImageHandlerPlugin/lib/image/generator/sfImageGeneratorIM.class.php
@@ -40,4 +40,12 @@ protected function disableInterlace()
   {
     $this->transform->command['interlace'] = '-interlace none';
   }
+
+  protected function configureImageHandle()
+  {
+    if (sfConfig::get('op_imagemagick_strip_exif', false))
+    {
+      $this->transform->command['profile'] = '+profile exif';
+    }
+  }
 }

 
本問い合わせは、以上でご利用を検討していただけると御礼を頂戴しました。
なお、この方法は、あくまで暫定対処です。
本ブログをご参照いただき、導入を検討される場合は、十分に検証を行った上でご利用いただくようお願いいたします。

技術サポートチームでは、皆様からのお問い合わせに、迅速に対応できますよう、
社員一丸となって対応しております。
 
=========================================
■公式SNS
https://sns.openpne.jp/
OpenPNEユーザーの皆さんが気軽にコミュニケーションができるQ&Aサイトです。
どなたでも無料で利用できます。(facebook、google、twitter の各アカウントでログインが可能です。)

■技術サポートサービス
http://support.pne.jp/
OpenPNE開発元の手嶋屋が提供しているサービスです。
有料になりますがこちらにお申し込みいただきますと弊社のOpenPNE開発エンジニアがOpenPNEの様々なトラブルについて、調査・サポートさせていただきます。
今後とも、OpenPNE 技術サポートサービスをよろしくお願いいたします。