EXIF分数计算

时间:2012-03-28 07:38:09

标签: c jpeg exif

我正在修改jpeg EXIF数据。有些数据需要定义为分数。 在这里,我有两个问题: 1.)哪个是正确的分数“格式”?例如,当我有30000μs的曝光时间(“ExposureTime”)并将其存储为30000/1000000时,EXIF查看器显示错误的曝光。存储为“1/30”将返回正确的结果。所有分数都必须是“1 / x”?

2.。)如何快速计算分数?我现在使用的方法(类似于[1]中的“Dec2Frac”)非常慢。

此致

[1] Calculating EXIF exposure time as a fraction (Delphi)

1 个答案:

答案 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};
        }