Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить метаданные о jpg файле? 
:(
    Опции темы
Vit
Дата 17.4.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Как получить метаданные о jpg файле? В простейшем случае желательно иметь хотя бы днину и ширину, но вообще-то обычно заголовки jpg хранят много кое чего: от марки фотоаппарата и использованного для редактирования софта, до фокусного расстояния съёмки, выдержки, диафрагмы и комментариев пользователя... Очень желательно получить их все. А ещё желательно не получить это не занимаясь вручную распарсыванием структуры jpg, ведь задача то не самая редкая, наверняка должны быть какие-то или родные или третьесторонние библиотеки и наработки для этого.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 17.4.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Vit, вынужден тебя огорчить: библиотеки, хоть они и есть, стоят дорого и не умеют всего. По предыдущему проекту перерыли пол-инета, нашли Atalasoft DotImage, но вылилось всё в написание пары тысяч строк собственной обёртки для "умного" доставания метаданных. Можно конечно freeImage юзать, но это требует смешанного кода: managed + native. Это я о форматах типа EXIF, IPTC, IIM (самые мейнстримовые). Есть ещё Adobe XMP, но там отдельный тулкит на C++, который также придётся прикручивать через связку managed+native.


--------------------
user posted image
PM MAIL WWW   Вверх
Vit
Дата 17.4.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



На сырцах посоветовали это:

http://www.codeproject.com/csharp/exifextractor.asp


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Retro
Дата 17.4.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Диалектик
***


Профиль
Группа: Участник Клуба
Сообщений: 1934
Регистрация: 28.6.2005
Где: Киев

Репутация: 9
Всего: 117



PM MAIL   Вверх
Void
Дата 17.4.2007, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



WPF поддерживает работу с метаданными изображений (EXIF, tEXt, IFD, IPTC, XMP). Если на сервере можно будет развернуть .NET 3.0…
Код
using System.IO;
using System.Windows.Media;
using System.Windows.Media.Imaging;

...
using (Stream imgStream = File.Open("image.jpg", FileMode.Open, FileAccess.Read))
{
    JpegBitmapDecoder decoder = new JpegBitmapDecoder(imgStream, BitmapCreateOptions.None,
        BitmapCacheOption.Default);
    BitmapFrame frame = decoder.Frames[0];
    BitmapMetadata metadata = (BitmapMetadata)frame.Metadata;
    string date = metadata.DateTaken;
    // Black magic here. Я воспользовался спецификацией EXIF, чтобы посмотреть 
    // значение тега, но не все значения работают, хотя соответствующие им метаданные
    // в файле есть
    string camera = metadata.GetQuery("/app1/ifd/{ushort=272}").ToString();
    Console.WriteLine("Date taken: {0}", date);
    Console.WriteLine("Camera: {0}", camera);
}

Вот ещё заметка.

Это сообщение отредактировал(а) Void - 17.4.2007, 22:13


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0852 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.