Как получить данные EXIF из файла с помощью [закрытого] C#

Вы можете использовать np.repeat()

import pandas as pd
import numpy as np

# your data
# ========================
df

   x  count
0  d      2
1  e      3
2  f      2

# processing
# ==================================
np.repeat(df.values, df['count'].values, axis=0)


array([['d', 2],
       ['d', 2],
       ['e', 3],
       ['e', 3],
       ['e', 3],
       ['f', 2],
       ['f', 2]], dtype=object)

pd.DataFrame(np.repeat(df.values, df['count'].values, axis=0), columns=['x', 'count'])

   x count
0  d     2
1  d     2
2  e     3
3  e     3
4  e     3
5  f     2
6  f     2
72
задан Joel in Gö 12 September 2008 в 10:43
поделиться

5 ответов

Проверьте этот экстрактор метаданных . <забастовка> Это записано в Java, но было также портировано к C#. я использовал версию Java для записи маленькой утилиты для переименования моих jpeg файлов на основе даты и образцовых тегов. Очень простой в использовании.

<час>

РЕДАКТИРОВАНИЕ экстрактор метаданных .NET поддержек также. Это - очень быстрая и простая библиотека для доступа к метаданным из изображений и видео.

Это полностью поддерживает Exif, а также IPTC, XMP и много других типов метаданных от типов файлов включая JPEG, PNG, GIF, PNG, ICO, WebP, PSD...

var directories = ImageMetadataReader.ReadMetadata(imagePath);

// print out all metadata
foreach (var directory in directories)
foreach (var tag in directory.Tags)
    Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}");

// access the date time
var subIfdDirectory = directories.OfType<ExifSubIfdDirectory>().FirstOrDefault();
var dateTime = subIfdDirectory?.GetDateTime(ExifDirectoryBase.TagDateTime);

Это доступно через NuGet и код GitHub.

19
ответ дан Drew Noakes 7 November 2019 в 08:33
поделиться

Вот ссылка на другой подобна ТАК вопрос , который имеет ответ, указывающий на эту хорошую статью о "Чтение, пишущий и фото метаданные" в .NET.

9
ответ дан Community 7 November 2019 в 08:33
поделиться

Получение данные EXIF из изображения JPEG включает:

  1. Поиск на маркеры JPEG, который упоминает начало данных EXIF. например, обычно oxFFE1 является маркером, вставленным при кодировании данных EXIF, которые являются сегментом APPlication, куда данные EXIF идут.
  2. Синтаксический анализ все данные из говорят 0xFFE1 0xFFE2. Эти данные были бы потоком байтов в закодированном файле JPEG.
  3. ASCII, эквивалентный из этих байтов, содержал бы различную информацию, связанную с Датой Изображения, Именем Модели камеры, Воздействием и т.д.
4
ответ дан Tim Cooper 7 November 2019 в 08:33
поделиться

Класс изображения имеет свойства PropertyItems и PropertyIdList. Можно использовать их.

5
ответ дан idursun 7 November 2019 в 08:33
поделиться

Как было предложено, вы можете использовать какую-нибудь стороннюю библиотеку или сделать это вручную (что не так уж и сложно), но самым простым и гибким является использование встроенных функций. в .NET. Подробнее см .:

Я говорю: « гибкий », потому что .NET никоим образом не пытается интерпретировать или объединять данные. Для каждого EXIF ​​вы в основном получаете массив байтов. Это может быть хорошо или плохо в зависимости от того, какой контроль вы действительно хотите.

Также я должен указать, что список свойств на самом деле не соответствует напрямую значениям EXIF. Сам EXIF ​​хранится в нескольких таблицах с перекрывающимися идентификаторами, но. NET помещает все в один список и переопределяет идентификаторы некоторых элементов. Но если вам не важны точные идентификаторы EXIF, с сопоставлением .NET все будет в порядке.


Изменить: Это можно сделать без загрузки полного изображения после этого ответа: https://stackoverflow.com/a/552642/2097240[1220 impression

46
ответ дан 24 November 2019 в 12:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: