【java】Sanselanを使ってみた

  • 2019年10月4日
  • 2019年10月4日
  • Java

androidでは、一般的にexifを取得する場合はexifInterfaceを使って取得

することができますが、setAttirubteでlatitudeやlongitudeを追加しようと

してもnullになっていたり追加できても他のexifが消し飛んでたりと

信用がいまいちできない(不具合は今のところないですけどね)

ライブラリなのですが、代用品として

Sanselanというライブラリが良さそうだったので使い方だけ残しておきます。

 

このSanselanライブラリは、年期こそそこそこあるライブラリなのですが、

exifとして取ってこれるデータが多いことと他のexif情報を壊さずに

追加できるなど、exifInterfaceにはない良さも含んでいるので、

もしこちらの良さが際立つなら乗り換えようかなと考えながら

サンプルを辿って作ってみました。

 

まず、公式hpからgradleタグの中にある文をそのままコピーして

gradleのlibs内に格納します。

 

</pre>
implementation group: 'org.apache.sanselan', name: 'sanselan', version: '0.97-incubator'
<pre>

 

syncでエラーがでなければそのまま使うことができるので、とりあえず

空メソッドを作って中にSanselanの処理を以下のように書いていきます。

※今回はexifの取得だけを目的に書きました。

 

</pre>
public void sanselanMethod(){
<p class="prettyprint prettyprinted"><span class="typ">JpegImageMetadata</span><span class="pln"> jpegMetadata </span><span class="pun">=</span> <span class="pun">(</span><span class="typ">JpegImageMetadata</span><span class="pun">)</span><span class="pln"> sanselanmetadata</span><span class="pun">;</span></p>
<p class="prettyprint prettyprinted"><span class="typ">TiffImageMetadata</span><span class="pln"> tiffImageMetadata </span><span class="pun">=</span><span class="pln"> jpegMetadata</span><span class="pun">.</span><span class="pln">getExif</span><span class="pun">();</span></p>
<p class="prettyprint prettyprinted"><span class="pln">getExif</span><span class="pun">(</span><span class="pln">tiffImageMetadata</span><span class="pun">);</span></p>
}

private static void getExif(TiffImageMetadata tiffImageMetadata) throws ImageReadException {
for(Object field : tiffImageMetadata.getAllFields())
{
if(field instanceof TiffField)
{
TiffField tiffField = (TiffField)field;
System.out.println(tiffField.getTagName()+ ": " + tiffField.getValueDescription());
}
}
}
<pre>

 

ログを見るとexif情報がドバっと出てくるので後は使いたいexif情報を

取り出します。

こちらからexifの情報を入れたい時は以下のように追加します。

 

</pre>
TiffOutputSet exifSet = null;
<p class="embcode">exifSet =new TiffOutputSet();</p>
exifSet .setGPSInDegrees(lon, lat);

基本的な使い方は以上です。exifInterfaceを使っていた人は慣れない

かもしれません。使用感に関してはシンプルで判りやすいライブラリで

誰でも導入できそうで便利だなと思いますが、まだexifInterfaceとの差を

感じられずもう少し使ってみないと良さが分からないというのが今回の感想です。

 

※古いのにしっかり使えてすげーっていうのが第一の感想。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG