none
Странное поведение ImageProperties на эмуляторе/мобильном устройстве и на компьютере RRS feed

  • Вопрос

  • Я пытаюсь получить 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...
        _______________________________
    Таким образом, один и тот же код при отладке на локальной машине работает, на эмуляторе - нет. Что здесь не так?



    29 июня 2017 г. 14:58

Все ответы

  • Не совсем точно написал, на реальном устройстве тоже не работает. Тем временем поступил следующий ответ:

    "Thanks for reporting this issue, I can reproduce it in my side that it works in windows desktop but fails in mobiles. I have report it in our internal channel. Thanks for your understanding and appreciate your patience in advance."

    Таким образом, когда нибудь будет фикс....

    13 июля 2017 г. 7:36