我正在修改jpeg EXIF数据。有些数据需要定义为分数。 在这里,我有两个问题: 1.)哪个是正确的分数“格式”?例如,当我有30000μs的曝光时间(“ExposureTime”)并将其存储为30000/1000000时,EXIF查看器显示错误的曝光。存储为“1/30”将返回正确的结果。所有分数都必须是“1 / x”?
2.。)如何快速计算分数?我现在使用的方法(类似于[1]中的“Dec2Frac”)非常慢。
此致
答案 0 :(得分:0)
这是我在C#中用于计算EXIF GPS数据分数的代码。该方法返回一个包含两个整数的数组 - 一个是分子,一个是分母。
public static int[] GetFraction(Decimal value)
{
int denominator = 1;
int numeratorMultiplier = 1;
Decimal numerator = value * numeratorMultiplier;
int failSafe = 0;
while (Decimal.Remainder(numerator, 1m) != 0m && failSafe < 20 && ((long)numerator * 10) < Int32.MaxValue)
{
denominator *= 10;
numeratorMultiplier *= 10;
numerator = value * numeratorMultiplier;
failSafe++;
}
return new int[] {Decimal.ToInt32(numerator), denominator};
}