Библиотека exif, совместимая с Xamarin mac 2.10

Я использовал https://www.nuget.org/packages/ExifLib.PCL/ библиотека до обновления.

Я не могу использовать эту библиотеку сейчас:

Не удалось установить пакет ExifLib.PCL 1.0.1. Вы пытаетесь установить этот пакет в проект, предназначенный для «Xamarin.Mac, версия = v2.0», но пакет не содержит ссылок на сборки или файлов содержимого, совместимых с этой платформой. Для получения дополнительной информации свяжитесь с автором пакета.

Любая альтернатива?

Я использую библиотеку Exif для получения даты съемки изображения:

using (var stream = File.Open (filePath, FileMode.Open)) {
                var ein=new CGImagePropertiesExif ();
                var jpegInfo = ExifReader.ReadJpeg (stream);
                if (jpegInfo.DateTimeOriginal != null) {
                    takenDate = DateTime.ParseExact (jpegInfo.DateTimeOriginal, "yyyy:MM:dd HH:mm:ss", null);
                }
            }

этот код завершает приложение, также не видно никаких исключений :(

если я просто издеваюсь над datetime , например:

static DateTime GetMyImageTakenDate (NSUrl url)
        {
            DateTime takenDate = DateTime.Today;

            using (var stream = File.Open (url.Path, FileMode.Open)) {

                takenDate = DateTime.ParseExact (DateTime.Now.ToString ("yyyy:MM:dd HH:mm:ss"), "yyyy:MM:dd HH:mm:ss", null);
            }
            return takenDate;
        }

приложение работает нормально :/


person Nininea    schedule 18.10.2016    source источник
comment
Попробуйте предварительную версию: ExifLib.PCL 1.0.2-pre01 Она была обновлена ​​для поддержки .netstandard 1.0.   -  person SushiHangover    schedule 18.10.2016
comment
спасибо :)) работает.   -  person Nininea    schedule 18.10.2016
comment
но у меня все еще есть проблема, я использую exif lib для получения даты съемки изображения var jpegInfo = ExifReader.ReadJpeg (stream); if (jpegInfo.DateTimeOriginal!= null) { TakeDate = DateTime.ParseExact (jpegInfo.DateTimeOriginal, гггг:ММ:дд ЧЧ:мм:сс, ноль); } завершает работу приложения :(   -  person Nininea    schedule 18.10.2016
comment
Разве вы не можете напрямую читать данные exif из PHAsset?\   -  person Cheesebaron    schedule 18.10.2016
comment
Я не пробовал, если можно, дайте ссылку на какой-нибудь пример.   -  person Nininea    schedule 18.10.2016
comment
@Nininea На какой строке кода он заканчивается? Смотрите мой ответ, у меня отлично работает....   -  person SushiHangover    schedule 18.10.2016


Ответы (1)


Ваш код отлично работает для меня:

var filePath = "/Users/sushi/Desktop/img_1771.jpg";
using (var stream = File.Open(filePath, FileMode.Open))
{
    var jpegInfo = ExifReader.ReadJpeg(stream);
    if (jpegInfo.DateTimeOriginal != null)
    {
        var takenDate = DateTime.ParseExact(jpegInfo.DateTimeOriginal, "yyyy:MM:dd HH:mm:ss", null);
        Console.WriteLine(takenDate);
    }
}

Выход:

12/14/2003 12:01:44 PM

С использованием:

Xamarin.Mac Version: 2.10.0.105
ExifLib.PCL Version: 1.0.2-pre01
person SushiHangover    schedule 18.10.2016
comment
этот код используется внутри модального окна. вот основной процесс, я должен получить дату при загрузке информации, а также должен скопировать изображение в свой каталог, без получения даты приложение работает нормально. когда я пытаюсь получить дату, приложение перестает работать, но пропускает все строки, не выдает никаких исключений - person Nininea; 18.10.2016
comment
@Nininea Вам нужно построчно пройтись по коду и определить, какая строка вызывает сбой (или приложение просто нормально завершает работу?) - person SushiHangover; 18.10.2016
comment
Я знаю отладку, но это не простой случай. без получения даты выхода только модальное закрывается (как и ожидалось), но если я добавлю этот код, то, что я написал, все строки будут выполняться внутри метода загрузки файла, а затем приложение завершается (так не должно быть) - person Nininea; 18.10.2016
comment
У меня тоже работало, после обновления версии xamarin перестало работать :( - person Nininea; 18.10.2016
comment
Затем просто смоделируйте takenDate с датой в строке после takenDate = DateTime.ParseE.... в качестве отладочного теста... и отследите/отладьте его оттуда. - person SushiHangover; 18.10.2016
comment
Я изменил код: используя (var stream = File.Open (url.Path, FileMode.Open)) { var jpegInfo = ExifReader.ReadJpeg (stream); TakeDate = DateTime.ParseExact (DateTime.Now.ToString (yyyy:MM:dd HH:mm:ss), yyyy:MM:dd HH:mm:ss, null); } вроде работает - person Nininea; 18.10.2016
comment
Я принимаю ваш ответ, потому что версия ExifLib.PCL: 1.0.2-pre01 совместима. для основной проблемы я написал обходной путь: stackoverflow.com/questions/40113284/ - person Nininea; 19.10.2016