Расчет доли EXIF - PullRequest
       6

Расчет доли EXIF

1 голос
/ 28 марта 2012

Я изменяю данные в формате JPEG EXIF.Некоторые данные должны быть определены как дроби.Здесь у меня есть две проблемы: 1.) Какая фраза является «форматом»?Например, когда у меня есть время экспозиции («ExposureTime») 30000 мкс, и я сохраняю его как 30000/1000000, программа просмотра EXIF ​​показывает неправильную экспозицию.Сохранение как "1/30" возвращает правильный результат.Должны ли все дроби быть "1 / x"?

2.) Как быстро рассчитать дробь?Метод, который я сейчас использую (аналог «Dec2Frac» в [1]), очень медленный.

С уважением,

[1] Расчет времени экспозиции EXIF ​​в виде дроби (Delphi)

1 Ответ

0 голосов
/ 25 апреля 2012

Это код, который я использовал в C # для вычисления доли для данных GPS EXIF. Метод возвращает массив из двух целых чисел - одно является числителем, а другое - знаменателем.

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};
        }
...