Czytanie/zapisywanie metadanych EXIF

Exif jest to standard metadanych dla plików z obrazkami, wydany przez Japan Electronics and Information Technology Industries Association. Tak po prostu są to informacje dołączone do pliku graficznego, które stanowią dodatkową informację dla użytkownika. Można w nich zapisać tagi obrazka, autora, tytuł, dodać komentarz czy prawa autorskie. Takich danych, które można dołączyć do pliku, jest bardzo dużo. Podgląd niektórych metadanych można zobaczyć, klikając prawym przyciskiem myszy na plik graficzny i wybierając opcje właściwości:

exif_1

 

Dane te często przydają się do filtrowania dużej ilości zdjęć no i oczywiście do sprawdzania źródła pliku. Pełną listę dostępnych adresów metadanych i ich opis dostępny jest na stronie: http://www.exiv2.org/tags.html

U mnie w firmie te dane przydały się do stworzenia archiwum plików graficznych, ich filtrowanie i wyodrębnianie. Dzięki stworzonemu oprogramowaniu możliwe jest szybkie dodawanie i edytowanie metadanych ich segregacja i logiczny system archiwizacji.

My zrobimy sobie proty program do wyświetlania metadanych i ich zapisywania. Będziemy mieli też opcję na wyświetlenie wszystkich adresów metadanych, aby było można je dodać. Zaczynamy od zbudowania formy:

exif1

Rodzaj elementu Nazwa elementu Ustawienia
Form Form1 Name: Form1
Text: EXIF edytor
Size: 836; 492
Button Button1 Name: Button1
Size: 399; 23
Location: 13; 13
Text: Załaduj obrazek
PictureBox PictureBox1 Name: PictureBox1
Size: 400; 400
Location: 13; 42
BorderStyle: FixedSingle
Button Button2 Name: Button2
Size: 175; 23
Location: 633; 418
Text: Wyświetl wszystkie identyfikatory
Button Button3 Name: Button3
Size: 208; 23
Location: 419; 418
Text: Zapisz
DataGridView DataGridView1 Name: DataGridView1
Size: 389; 399
Location: 419; 13
AllowUserToAddRows: False
AllowUserToDeleteRows: False
RowHeadersVisible: False
OpenFileDialog OpenFileDialog1 Name: OpenFileDialog1

 

Tabela Kolumna Ustawienia
DataGridView1 Column1 Name: Column1
Width: 70
HeaderText: Exif Prop
DataGridView1 Column2 Name: Column2
Width: 150
HeaderText: Opis
DataGridView1 Column3 Name: Column3
AutoSizeMode: Fill
HeaderText: Wartość

Naszą pracę zaczniemy od zaimportowania składników wymaganych do działania naszego programu i stworzenie listy z adresami i opisem naszych metadanych.

Musimy pobrać obrazek z dysku. W tym celu dodamy sobie dialog, który będzie filtrował nam pliki i umożliwi zapisanie jego ścieżki do zmiennej.

Teraz pobierzemy nasze metadane. Służy do tego metoda pobierzDaneEXIF():

Efekt powinien być taki jak na zdjęciu poniżej:

exif2

Ręczna zmiana danych EXIF będzie widoczna w programie. Teraz dodamy sobie aktywność przycisku wyświetlającego wszystkie identyfikatory metadanych, które zawiera nasz plik. Pętla, która nam to wykona, nie różni się za bardzo od pętli pobierającej metadane:

Efekt jest taki, że mój plik graficzny zawiera identyfikatory Exif:

exif4

Nie warto wyświetlać nieznanych nam metadanych ponieważ mogą posiadać inny niż standardowy sposób kodowania (my używamy System.Text.Encoding.Unicode) lub nieznany typ zmiennej co przy próbie jego otworzenia może spowodować błąd. Sprawdźmy co oznacza identyfikator 50706:

exif5

Dla 20625 i 20624 nie ma opisu, nie wiem, co one oznaczają jak ktoś, będzie dociekliwy to na pewno znajdzie. Trzeba jeszcze zaznaczyć, że program będzie czytał i zapisywał tylko te zmienne, których typ jest Byte, ale przerobienie go tak, aby zapisywał inny typ zmiennych, nie będzie stanowił problemu. Musimy tylko wiedzieć jaki typ zmiennej kryje się pod jej identyfikatorem. Przejdźmy teraz do zapisywania:

To by było na tyle. Program zapisuje i czyta metadane.

exif6

Pełen kod programu dostępny tutaj: EXIF_edytor

Projek do pobrania tutaj: ZmianaDanychExif

 

Permalink do tego artykułu: https://visualmonsters.cba.pl/czytaniezapisywanie-metadanych-exif/

Dodaj komentarz

Twój adres email nie będzie publikowany.