Страницы: 1
RSS
VBA как получить информацию GPS (Exif) из файла jpg, VBA как получить информацию GPS (Exif) из файла jpg
 
VBA как получить информацию GPS (Exif) из  файла jpg
 
https://www.google.ru/search?q=VBA+%D0%BA%D0%B0%D0%BA+%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B­8%D1%82%D1%8C+%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%­86%D0%B8%D1%8E+GPS+(Exif)+%D0%B8%D0%B7+%D1%84%D0%B0%D0%B9%D0%BB%D0%B0+jpg&oq=VBA+%D0%BA%D0%B0%D0%BA+%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%­B8%D1%82%D1%8C+%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1­%86%D0%B8%D1%8E+GPS+(Exif)+%D0%B8%D0%B7+%D1%84%D0%B0%D0%B9%D0%BB%D0%B0+jpg&aqs=chrome..69i57j69i60.988j0j7&sourceid=chrome&ie=UTF-8
 
Поиском я пользовался, но нет рабочих вариантов. Например, где взять функцию GPSExifReader из примера http://qaru.site/questions/2139497/excel-vba-open-folder-and-get-gps-info-exif-of-each-files-in-it
Пробывал получить свойства файла через Shell

strFolder = "D:\"
strItem = "7128895.jpg"
   
Set objShell   = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(strFolder)  
Set objItem    = objFolder.Items.Item(strItem)

objFolder.GetDetailsOf(objFolder.Items, i)

Могу просмотреть простые свойства, типа Даты съемки

По стандарту  EXIF
https://sno.phy.queensu.ca/~phil/exiftool/TagNames/GPS.html

не могу
Изменено: sapul - 03.08.2018 08:32:44
 
Так там ведь есть ссылка:
http://www.everythingaccess.com/downloads/GPSExifReader.zip
Вот говорят там оно всё и есть, и в той теме подробно описано:
"1. Импортируйте модули классов из кода Wayne в свою книгу VBProject (думаю, вы уже это сделали).
2. Создайте новую подпрограмму, подобную приведенной ниже, в обычном модуле кода."
Я правда сам проверить не смог, ибо нет у меня Access
 
Цитата
sapul написал:
где взять функцию GPSExifReader
там же в статье есть ссылка для скачивания этого самого GPSExifReader. Скачиваете, устанавливаете, подключаете в Tools -References нужную библиотеку и пользуетесь. Ну или как там еще надо использовать то, что в архиве. Сам не скачивал, только предположение. Может там готовый модуль лежит...
Ну вот Игорь уже написал более точную инструкцию.
Изменено: Дмитрий(The_Prist) Щербаков - 03.08.2018 08:35:32
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо, что Вы эмоционально реагируете на простые вопросы, но по ссылке лежит пример на Access. И там совсем не тривиальное решение. Мне хотелось узнать в VBA есть более прямой путь, так например на php достаточно воспользоваться exif_read_data и у тебя в массиве все сведения, пример
$exif = exif_read_data('img/IMG_20180727_104631.jpg', 0, true);
 echo '<pre>';
       print_r($exif);
 echo  '</pre>';
 
Реагируют потому, что Вы спрашиваете:
Цитата
sapul написал:
где взять функцию GPSExifReader
 
Цитата
sapul написал:
эмоционально реагируете на простые вопросы
не совсем понятно о каких эмоциях речь. Вы точно правильно читаете ответы, от себя там ничего не дописываете? :) Вам просто ответили на Ваши вопросы и разложили по полочкам. Судя по вопросу Вы сами не смогли найти функцию - Вам подсказали где искать. Какие эмоции Вы тут обнаружили?

А вот тривиальное решение задачи вряд ли можно найти, т.к. у VBA нет функций, которые могут достать нужную Вам информацию. Не для этого язык предназначен и в общем-то сам по себе он достаточно скуден, если не прибегать к другим библиотекам. Если бы было что-то проще и удобнее - думаете Вас бы гоняли по ссылкам? :)
Но всегда есть шанс, что кому-то захочется заморочиться и поискать/поизобретать более простое решение. Имеет смысл подождать. Я с картинками не очень часто работаю в части информации о них, поэтому мне не очень интересна задача сама по себе.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Доброе время суток.
Коллеги, а почему бы не пользоваться фактически штатной библиотекой Microsoft Windows Image Acquisition Library v2.0 (есть и в Windows 7 и в Windows 10)?
Код
Public Sub debugPrintExif()
    Const FileName = "C:\Path\FileName.jpg"
    Dim pImage As New WIA.ImageFile
    Dim gpsLatitude As WIA.Vector
    Dim gpsLongitude As WIA.Vector

    pImage.LoadFile FileName
    Set gpsLatitude = pImage.Properties("GpsLatitude").Value
    Set gpsLongitude = pImage.Properties("GpsLongitude").Value
    Debug.Print gpsLatitude(1).Value & "°" & gpsLatitude(2).Value & "'" & gpsLatitude(3).Value & """"
    Debug.Print gpsLongitude(1).Value & "°" & gpsLongitude(2).Value & "'" & gpsLongitude(3).Value & """"
End Sub
 
Наверное, только придется еще добавить обработку ошибок, если параметры GPS не заданы в параметрах EXIF.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
придется еще добавить обработку ошибок
Дмитрий, по вопросу ТС требовалась только демонстрация как получить. ТС же даже поздороваться не смог, а что уж тут говорить о стоящей перед ним цели использования этих GPS данных. Так что As Is
 
А мне нравится Форум, с парадигмами Доброе время суток и Без опыта работы с инструментами, но с желанием заочно их обсудить. Где же практики?
 
Цитата
sapul написал:
Где же практики?
А Вы сами себя к какой категории относите? Вам дали два рабочих варианта, а Вы вместо того, чтобы конструктивное обсуждение вести какие-то философские повествования ведете по одной Вам понятной теме. Андрей VG, предложил вариант. Пробовали?
Изменено: Дмитрий(The_Prist) Щербаков - 03.08.2018 10:16:31
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Выражаю благодарность Андрей VG,  за его участие в обсуждение. Его Рецепт подошел для задачи. Использование фактически штатной библиотекой Microsoft Windows Image Acquisition Library v2.0 (есть и в Windows 7 и в Windows 10).  
 
Вот вариант Андрей VG я могу попробовать, тут Access не нужен. И попробовал, наполовину - ибо лень идти на улицу фотографировать, а затем ещё возиться с импортом/экспортом... Да, не практик я, мне это никогда не было нужно, и таких фоток у меня нет! :)
 
Цитата
Hugo написал:
ибо лень идти на улицу
Мне тоже было лень! Воспользовался чужими фото :)
 
Цитата
Андрей VG написал:
Доброе время суток.Коллеги, а почему бы не пользоваться фактически штатной библиотекой Microsoft Windows Image Acquisition Library v2.0 (есть и в Windows 7 и в Windows 10)?
Здравствуйте, Андрей! Благодарю Вас за совет. При попытке использовать Ваш метод столкулся с такой проблемой: выдается ошибка "User-Defined type not defined" в строке Dim pImage As New WIA.ImageFile. Может быть у меня отсутствует библиотека WIA ? Если так, то как ее подключить? Или в чем-то другом проблема?
Заранее прошу прощения, если вопрос глупый.  
 
Цитата
maxler написал:
выдается ошибка "User-Defined type not defined"
А в Tools/References отметились?
 
Цитата
Андрей VG написал:
А в Tools/References отметились?
Да, теперь отметился ) Все заработало! Андрей, спасибо Вам огромное!
Страницы: 1
Наверх