Az 1. oldal tartalma
Bevezető
Az exiftool parancs segítségével különböző fájlformátumok metaadatait olvashatjuk vagy írhatjuk parancssorból, amely akkor lehet különösen hasznos, amikor nagyobb mennyiségben van szükségünk a fájlok automatizált feldolgozására.
Ebben a leírásban átnézünk néhány általánosabb használati példát, valamint egy komplett automatizáló shell scriptet is kipróbálunk, ami JPG fájlok IPTC adatait másolja át EPS fájlokba.
Telepítés
Ha nincs még a gépünkön az exiftool csomag, akkor telepítsük az alábbi apt-get paranccsal Debian alapú rendszereken:
sudo apt-get install exiftool
Lényegében ez egy alias név, ami fizikailag a libimage-exiftool-perl csomagot telepíti fel Debian 8 (Jessie)-n a 9.74-es verziót, Debian 9 (Stretch)-re pedig a 10.40-es kiadást.
A parancs futtatása után már használhatjuk is a programot.
Alapvető használati módok
Az exiftool parancsot alapvetően háromféle módban használhatjuk a meta adatok kezelésére: olvasás, írás és másolás. Persze rengeteg kapcsolót és opciót támogat a program, de működése szempontjából ezt a három "üzemmódot" érdemes elkülöníteni.
A példákhoz létrehoztam három JPG fájlt, az egyiket a linux-os GIMP programmal (proba_gimp.jpg), a másikat pedig Windows alatt a Photoshop-al (proba_ps.jpg). Mindkettő 1024x768-as üresen lementett kép. A harmadik képfájl pedig egy weboldal PHP scriptje által kezelt/generált fájl (proba_php.jpg), amiben még találhatunk egyéb adatokat is. Talán a JPG fájlok a legáltalánosabb fájlformátumok a metaadatok kezelésének demonstrálására, így ebben a fejezetben ezeken fogunk gyakorolni.
Olvasás
A GIMP-es jpg változat meta adatainak kiolvasása:
exiftool proba_gimp.jpg
A kimenete pedig:
ExifTool Version Number : 10.40 File Name : proba.jpg Directory : . File Size : 10 kB File Modification Date/Time : 2019:05:25 10:09:47+02:00 File Access Date/Time : 2019:05:25 10:10:31+02:00 File Inode Change Date/Time : 2019:05:25 10:09:47+02:00 File Permissions : rw-r--r-- File Type : JPEG File Type Extension : jpg MIME Type : image/jpeg JFIF Version : 1.01 Resolution Unit : inches X Resolution : 72 Y Resolution : 72 Comment : Created with GIMP Image Width : 1024 Image Height : 768 Encoding Process : Progressive DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:4:4 (1 1) Image Size : 1024x768 Megapixels : 0.786
A Photoshop-os képfájl metaadatok kiolvasása pedig:
exiftool proba_ps.jpg
Kimenete:
ExifTool Version Number : 10.40 File Name : proba_ps.jpg Directory : . File Size : 62 kB File Modification Date/Time : 2019:05:25 10:24:04+02:00 File Access Date/Time : 2019:05:25 10:24:21+02:00 File Inode Change Date/Time : 2019:05:25 10:24:04+02:00 File Permissions : rw-r--r-- File Type : JPEG File Type Extension : jpg MIME Type : image/jpeg Exif Byte Order : Big-endian (Motorola, MM) Orientation : Horizontal (normal) X Resolution : 72 Y Resolution : 72 Resolution Unit : inches Software : Adobe Photoshop CS5 Windows Modify Date : 2019:05:25 10:23:42 Color Space : sRGB Exif Image Width : 1024 Exif Image Height : 768 Compression : JPEG (old-style) Thumbnail Offset : 314 Thumbnail Length : 920 IPTC Digest : 00000000000000000000000000000000 Displayed Units X : inches Displayed Units Y : inches Print Style : Centered Print Position : 0 0 Print Scale : 1 Global Angle : 120 Global Altitude : 30 URL List : Slices Group Name : Névtelen-1 Num Slices : 1 Pixel Aspect Ratio : 1 Photoshop Thumbnail : (Binary data 920 bytes, use -b option to extract) Has Real Merged Data : Yes Writer Name : Adobe Photoshop Reader Name : Adobe Photoshop CS5 Photoshop Quality : 12 Photoshop Format : Standard Progressive Scans : 3 Scans XMP Toolkit : Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00 Creator Tool : Adobe Photoshop CS5 Windows Create Date : 2019:05:25 10:23:42+02:00 Metadata Date : 2019:05:25 10:23:42+02:00 Format : image/jpeg Instance ID : xmp.iid:84F62D68C67EE9119084C99B2E87B7B0 Document ID : xmp.did:84F62D68C67EE9119084C99B2E87B7B0 Original Document ID : xmp.did:84F62D68C67EE9119084C99B2E87B7B0 Color Mode : RGB ICC Profile Name : sRGB IEC61966-2.1 History Action : created History Instance ID : xmp.iid:84F62D68C67EE9119084C99B2E87B7B0 History When : 2019:05:25 10:23:42+02:00 History Software Agent : Adobe Photoshop CS5 Windows Profile CMM Type : Lino Profile Version : 2.1.0 Profile Class : Display Device Profile Color Space Data : RGB Profile Connection Space : XYZ Profile Date Time : 1998:02:09 06:49:00 Profile File Signature : acsp Primary Platform : Microsoft Corporation CMM Flags : Not Embedded, Independent Device Manufacturer : IEC Device Model : sRGB Device Attributes : Reflective, Glossy, Positive, Color Rendering Intent : Media-Relative Colorimetric Connection Space Illuminant : 0.9642 1 0.82491 Profile Creator : HP Profile ID : 0 Profile Copyright : Copyright (c) 1998 Hewlett-Packard Company Profile Description : sRGB IEC61966-2.1 Media White Point : 0.95045 1 1.08905 Media Black Point : 0 0 0 Red Matrix Column : 0.43607 0.22249 0.01392 Green Matrix Column : 0.38515 0.71687 0.09708 Blue Matrix Column : 0.14307 0.06061 0.7141 Device Mfg Desc : IEC http://www.iec.ch Device Model Desc : IEC 61966-2.1 Default RGB colour space - sRGB Viewing Cond Desc : Reference Viewing Condition in IEC61966-2.1 Viewing Cond Illuminant : 19.6445 20.3718 16.8089 Viewing Cond Surround : 3.92889 4.07439 3.36179 Viewing Cond Illuminant Type : D50 Luminance : 76.03647 80 87.12462 Measurement Observer : CIE 1931 Measurement Backing : 0 0 0 Measurement Geometry : Unknown Measurement Flare : 0.999% Measurement Illuminant : D65 Technology : Cathode Ray Tube Display Red Tone Reproduction Curve : (Binary data 2060 bytes, use -b option to extract) Green Tone Reproduction Curve : (Binary data 2060 bytes, use -b option to extract) Blue Tone Reproduction Curve : (Binary data 2060 bytes, use -b option to extract) DCT Encode Version : 100 APP14 Flags 0 : [14] APP14 Flags 1 : (none) Color Transform : YCbCr Image Width : 1024 Image Height : 768 Encoding Process : Baseline DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:4:4 (1 1) Image Size : 1024x768 Megapixels : 0.786 Thumbnail Image : (Binary data 920 bytes, use -b option to extract)
Amint láthatjuk, a Photoshop sokkal több dolgot tárol a lementett képfájlok meta részében.
És a PHP által lementett kép metaadatai:
exiftool proba_php.jpg
ExifTool Version Number : 10.40 File Name : proba_php.jpg Directory : . File Size : 264 kB File Modification Date/Time : 2019:05:25 11:57:55+02:00 File Access Date/Time : 2019:05:25 12:14:09+02:00 File Inode Change Date/Time : 2019:05:25 12:05:45+02:00 File Permissions : rw-r--r-- File Type : JPEG File Type Extension : jpg MIME Type : image/jpeg JFIF Version : 1.01 Resolution Unit : None X Resolution : 1 Y Resolution : 1 Comment : CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 85. Image Width : 2828 Image Height : 2828 Encoding Process : Baseline DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2) Image Size : 2828x2828 Megapixels : 8.0
Itt pedig ami érdekesség van az a "Comment" mezőben lévő adat, ami mutatja hogy a kép a PHP GD képkezelő kiterjesztésével lett létrehozva 85-ös képminőségi beállítással.
Csoportok
A meta adatok strukturált formában kerülnek beágyazásra a fájlokban, ezért lehetőség van az összefüggő adatok külön csoportját is lekérdezni, mint például az XMP rekordot is, amit az Adobe alkalmazásai helyeznek el a képfájlokban. Ezt a következőképpen kérhetjük le a Photoshop által lementett képfájlból:
exiftool -XMP:all proba_ps.jpg
XMP Toolkit : Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00 Creator Tool : Adobe Photoshop CS5 Windows Create Date : 2019:05:25 10:23:42+02:00 Metadata Date : 2019:05:25 10:23:42+02:00 Format : image/jpeg Instance ID : xmp.iid:84F62D68C67EE9119084C99B2E87B7B0 Document ID : xmp.did:84F62D68C67EE9119084C99B2E87B7B0 Original Document ID : xmp.did:84F62D68C67EE9119084C99B2E87B7B0 Color Mode : RGB ICC Profile Name : sRGB IEC61966-2.1 History Action : created History Instance ID : xmp.iid:84F62D68C67EE9119084C99B2E87B7B0 History When : 2019:05:25 10:23:42+02:00 History Software Agent : Adobe Photoshop CS5 Windows
Ekkor tehát csak az XMP vonatkozású mezőket és értékeket listázza ki.
A parancssorban a -XMP kapcsoló után lévő ":all" utótag gondoskodik az összes mező szöveges formában történő kilistázásáról. Enélkül ugyanis bináris adatként adja ki az XMP (vagy bármelyik több mezőből álló) rekordot, amit például fájlba irányítva más programokkal dolgozhatunk fel, stb.
Vagy például az Exif csoportot is lekérdezhetjük hasonlóan:
exiftool -Exif:all proba_ps.jpg
Orientation : Horizontal (normal) X Resolution : 72 Y Resolution : 72 Resolution Unit : inches Software : Adobe Photoshop CS5 Windows Modify Date : 2019:05:25 10:23:42 Color Space : sRGB Exif Image Width : 1024 Exif Image Height : 768 Compression : JPEG (old-style) Thumbnail Offset : 314 Thumbnail Length : 920 Thumbnail Image : (Binary data 920 bytes, use -b option to extract)
Egyedi mezők
Egyedi mezők kiolvasására is van lehetőség, ha például automatizált feldolgozó scriptet kellene készítenünk bizonyos adatmezők kiértékeléséhez, stb.
Ezek fényében kényelmesen kiolvashatjuk például valamelyik jpg példánkból a kép felbontását:
exiftool -Imagesize proba_ps.jpg
Image Size : 1024x768
De akár egyszerre több mezőt is lekérhetünk, például külön az exif szélességet és külön a magasságot:
exiftool -ExifImageWidth -ExifImageHeight proba_ps.jpg
Exif Image Width : 1024 Exif Image Height : 768
És így tovább, bármennyi egyedi mezőt kérhetünk le.
Adatok formázása
A kért információt sokféleképpen formázhatjuk, így rugalmasan fel tudjuk használni saját feladatainkban, programjainkban.
JSON forma
A legutóbbi példánál maradva, ha mondjuk JSON formában lenne szükségünk az adatokra, akkor szúrjuk be a -j kapcsolót az előző parancsunkba:
exiftool -j -ExifImageWidth -ExifImageHeight proba_ps.jpg
És JSON-ban kapjuk az eredményt, amit már bármelyik általunk használt programnyelvből könnyen felhasználhatunk:
[{
"SourceFile": "proba_ps.jpg",
"ExifImageWidth": 1024,
"ExifImageHeight": 768
}]
Dupla soros forma
Ha olyan helyzetben vagyunk, hogy csak natív Bash utasításokkal dolgozhatunk – ahol nem állnak rendelkezésre külső JSON feldolgozó programok –, akkor használjuk az -l kapcsolót (kicsi L) a korábbi -j helyett:
exiftool -l -ExifImageWidth -ExifImageHeight proba_ps.jpg
Ekkor dupla soros változatban kapjuk meg a mezőnév és érték párokat:
Exif Image Width 1024 Exif Image Height 768
Ezt pedig már a Bash ciklusaival és tömb struktúrájával könnyedén ráncba szedhetjük a sortörések kihasználásával.
PHP tömb forma
Ha PHP-ben szeretnénk feldolgozni a kapott adatokat, akkor használjuk a -php kapcsolót:
exiftool -php -ExifImageWidth -ExifImageHeight proba_ps.jpg
Ekkor pedig egy PHP tömb alakjában juthatunk hozzá az értékekhez:
Array(Array( "SourceFile" => "proba_ps.jpg", "ExifImageWidth" => 1024, "ExifImageHeight" => 768 ));
amit aztán egyszerűen kiértékelve valódi PHP tömbbé alakíthatunk.
Az Exiftool ezeken kívül tartalmaz még számos kimeneti formázási lehetőséget, ezekről célszerű a parancs manual oldalán tájékozódni.
A következő oldalon folytatjuk az exiftool parancs írási funkciójával...
Lapozó
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 588 megtekintés