UWP: странное поведение ImageProperties на эмуляторе/мобильном устройстве и на компьютере

313
01 июля 2017, 08:37

Я пытаюсь получить Exif из JPG и CR2 файлов.

        var file1 = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Images/IMG_3163.JPG"));
        var file2 = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Images/IMG_3163.CR2"));
        await GetExifValues(file1);
        await GetExifValues(file2);
    public async Task GetExifValues(StorageFile file_)
    {
        ImageProperties props = await file_.Properties.GetImagePropertiesAsync();
        var requests = new System.Collections.Generic.List<string>();
        requests.Add("System.Photo.DateTaken");
        requests.Add("System.Photo.FNumber");
        requests.Add("System.Photo.ExposureTimeNumerator");
        requests.Add("System.Photo.ExposureTimeDenominator");
        requests.Add("System.Photo.ISOSpeed");
        requests.Add("System.Photo.Orientation");
        IDictionary<string, object> retrievedProps = await props.RetrievePropertiesAsync(requests);
        Debug.WriteLine("Parsing Exif from: " + file_.Path.ToString());
        if (retrievedProps.ContainsKey("System.Photo.DateTaken")) Debug.WriteLine("Exif_DateTaken: " + (DateTimeOffset)retrievedProps["System.Photo.DateTaken"]);
        if (retrievedProps.ContainsKey("System.Photo.FNumber")) Debug.WriteLine("Exif_FNumber: " + (double)retrievedProps["System.Photo.FNumber"]);
        if (retrievedProps.ContainsKey("System.Photo.ExposureTimeNumerator")) Debug.WriteLine("Exif_ExposureTimeNumerator: " + (uint)retrievedProps["System.Photo.ExposureTimeNumerator"]);
        if (retrievedProps.ContainsKey("System.Photo.ExposureTimeDenominator")) Debug.WriteLine("Exif_ExposureTimeDenominator: " + (uint)retrievedProps["System.Photo.ExposureTimeDenominator"]);
        if (retrievedProps.ContainsKey("System.Photo.ISOSpeed")) Debug.WriteLine("Exif_ISOSpeed: " + (ushort)retrievedProps["System.Photo.ISOSpeed"]);
        if (retrievedProps.ContainsKey("System.Photo.Orientation")) Debug.WriteLine("Exif_Orientation: " + (ushort)retrievedProps["System.Photo.Orientation"]);
        Debug.WriteLine("_______________________________");
    }

При запуске на локальной машине все работает должным образом:

Parsing Exif from: C:\Data\SharedData\PhoneTools\AppxLayouts\72787847-7999-4ce9-8ad2-72f637364ff9VS.Debug_x86.smith\Images\IMG_3163.JPG
Exif_DateTaken: 6/19/2017 11:19:09 AM +03:00
Exif_FNumber: 2.8
Exif_ExposureTimeNumerator: 1
Exif_ExposureTimeDenominator: 250
Exif_ISOSpeed: 2000
Exif_Orientation: 1
_______________________________
Parsing Exif from: C:\Data\SharedData\PhoneTools\AppxLayouts\72787847-7999-4ce9-8ad2-72f637364ff9VS.Debug_x86.smith\Images\IMG_3163.CR2
Exif_DateTaken: 6/19/2017 11:19:09 AM +03:00
Exif_FNumber: 2.8
Exif_ExposureTimeNumerator: 1
Exif_ExposureTimeDenominator: 250
Exif_ISOSpeed: 2000
Exif_Orientation: 1
_______________________________

Но если это запустить на эмуляторе или телефоне, информация из файла CR2 не достается.

    Parsing Exif from: C:\Data\SharedData\PhoneTools\AppxLayouts\72787847-7999-4ce9-8ad2-72f637364ff9VS.Debug_x86.smith\Images\IMG_3163.JPG
    Exif_DateTaken: 6/19/2017 11:19:09 AM +03:00
    Exif_FNumber: 2.8
    Exif_ExposureTimeNumerator: 1
    Exif_ExposureTimeDenominator: 250
    Exif_ISOSpeed: 2000
    Exif_Orientation: 1
    _______________________________
    Parsing Exif from: C:\Data\SharedData\PhoneTools\AppxLayouts\72787847-7999-4ce9-8ad2-72f637364ff9VS.Debug_x86.smith\Images\IMG_3163.CR2
    ...results should be here...
    _______________________________

Таким образом, один и тот же код при отладке на локальной машине работает, на эмуляторе - нет. Что здесь не так?

READ ALSO
Как сгененировать GUID код внутри textBox?

Как сгененировать GUID код внутри textBox?

Подскажите, есть ли способ сгенерировать GUID код, с фигурными скобками?

370
Асинхронное свойство

Асинхронное свойство

В программе есть постраничный вывод данных из БД в DataGrid

241
Почему метод Show у Editor Window работает некорректно?

Почему метод Show у Editor Window работает некорректно?

В документации сказано, что метод EditorWindowShow открывает окно EditorWindow

241
Найти коэффициент полинома C#

Найти коэффициент полинома C#

Я пишу программу, способную решать уравнения / системы с помощью этой библиотеки

351