J'écris galerie.Mais j'ai obtenu double
quand j'utilise exifInterface.getAttribute(ExifInterface.TAG_EXPOSURE_TIME)
, il devrait être rationnel (fraction). Si j'ouvre la galerie de système, il est rationnel. Veuillez m'aider. Merci.Comment puis-je obtenir le temps d'exposition par rationnelle à partir des propriétés de la photo dans Android?
0
A
Répondre
0
Pour obtenir des valeurs précises/correctes, utilisez le nouveau ExifInterface support library au lieu de l'ancien ExifInterface.
Vous devez ajouter à votre gradle:
compile "com.android.support:exifinterface:25.1.0"
Et puis vous assurer d'utiliser la nouvelle android.support.media.ExifInterface bibliothèque au lieu de l'ancien 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;
}
Merci de donner le code answer.Your me faire proche de la vérité, il est rationnel mais pas accurate.There est une image [lien] (https://pan.baidu.com/s/1dEBcSAd) , je reçois 1/323 utiliser votre code, mais il est 1/328 dans Windows. – jianhua
Le problème est que vous utilisez toujours l'ancienne android.media.ExifInterface, ce qui vous donnera un temps d'exposition moins précis de 0,0031 à partir de votre photo de test. Au lieu de cela, vous devez ajouter à votre projet la nouvelle bibliothèque android.support.media.ExifInterface de Google et utiliser celle-ci à la place. ce qui vous donnera la bonne précision de 0.003053, et donc la valeur 1/328. S'il vous plaît voir l'explication ci-dessus l'algorithme. – PerracoLabs