0
私はexifInterface.getAttribute(ExifInterface.TAG_EXPOSURE_TIME)
を使用するとdouble
を得ました。合理的(分数)でなければなりません。システムギャラリーを開くと合理的です。助けてください。ありがとうございます。アンドロイドの写真のプロパティから合理的に露出時間を取得するにはどうすればよいですか?
私はexifInterface.getAttribute(ExifInterface.TAG_EXPOSURE_TIME)
を使用するとdouble
を得ました。合理的(分数)でなければなりません。システムギャラリーを開くと合理的です。助けてください。ありがとうございます。アンドロイドの写真のプロパティから合理的に露出時間を取得するにはどうすればよいですか?
正確な値を取得するには、古いExifInterfaceの代わりに新しいExifInterface support libraryを使用します。
あなたのGradleに追加する必要があります。その後、
compile "com.android.support:exifinterface:25.1.0"
そして、あなたは新しいandroid.support.media.ExifInterfaceライブラリーの代わりに、古いandroid.media.ExifInterfaceを使用して確認してください。
import android.support.media.ExifInterface;
String getExposureTime(final ExifInterface exif)
{
String exposureTime = exif.getAttribute(ExifInterface.TAG_EXPOSURE_TIME);
if (exposureTime != null)
{
exposureTime = formatExposureTime(Double.valudeOf(exposureTime));
}
return exposureTime;
}
public static String formatExposureTime(final double value)
{
String output;
if (value < 1.0f)
{
output = String.format(Locale.getDefault(), "%d/%d", 1, (int)(0.5f + 1/value));
}
else
{
final int integer = (int)value;
final double time = value - integer;
output = String.format(Locale.getDefault(), "%d''", integer);
if (time > 0.0001f)
{
output += String.format(Locale.getDefault(), " %d/%d", 1, (int)(0.5f + 1/time));
}
}
return output;
}
ありがとうございます。あなたのコードは私を真実に近いものにしますが、合理的ですが正確ではありません。画像[リンク](https://pan.baidu.com/s/1dEBcSAd) 、私は1/323あなたのコードを使用するが、それは1/328 Windowsです。 – jianhua
問題は、古いアンドロイド.media.ExifInterfaceを使用していることです。これは、テスト写真から0.0031の精度の低い露出時間を与えます。代わりに、Googleから新しいandroid.support.media.ExifInterfaceライブラリをプロジェクトに追加し、代わりにこのライブラリを使用する必要があります。 0.003053の正確な精度、したがって1/328の値が得られます。アルゴリズムの上の説明を参照してください。 – PerracoLabs