Wie erhalte ich Informationen zu einem Image (Bild) über die Linux-Befehlszeile?

257

Ich arbeite an einer Web-App und migriere derzeit einige Dinge von einer alten App, aber ich hasse es, dass ich einen Bildeditor öffnen muss, um Informationen über Bilder zu erhalten, die ich migriere. Dinge wie Bildabmessungen.

Gibt es ein Befehlszeilentool, das ich unter Linux für solche Aufgaben verwenden kann?

nemesisfixx
quelle

Antworten:

263

Für einige Bildformate können Sie einfach den fileBefehl verwenden:

$ file MyPNG.png 
MyPNG.png: PNG image, 681 x 345, 8-bit/color RGB, non-interlaced

Nicht alle Bildformate geben die Größe an (insbesondere JPEG nicht):

$ file MyJpeg.jpg 
MyJpeg.jpg: JPEG image data, JFIF standard 1.01

Für diejenigen, müssen Sie etwas Ausgefeilteres verwenden, wie:

$ convert MyJpeg.jpg -print "Size: %wx%h\n" /dev/null
Size: 380x380

Der convertBefehl ist Teil des ImageMagick-Pakets.

Majenko
quelle
7
Könnte nur ich sein, aber es scheint, dass imagemagick tatsächlich Bilddaten lädt, da sie ziemlich langsam laufen. imo identifysollte stattdessen verwendet werden
jozxyqk
1
oh, /dev/nullist ein Streit hehe
Aquarius Power
FWIW das ist, was ich verwendet habe, um die Erstellungszeit eines Fotos zu erhalten:identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
kralyk
2
Die aktuelle Version von filedoes unterstützt die Anzeige der Größe von JPEG ohne zusätzlichen Parameter: $ file foo.jpgreturns foo.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 72x72, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=1], baseline, precision 8, 120x120, frames 3
Cœur
199

Diese Informationen erhalten Sie am besten mit dem folgenden identifyBefehl:

$ identify image.png

oder nur Größenattribute

$ identify -format "%wx%h" photo.jpg

Es ist Teil von ImageMagick, das Sie wie folgt auf Ubuntu installieren können:

$ sudo apt-get install imagemagick
Ielton
quelle
1
Die Spezifikationen für den Formatstring finden Sie im GraphicsMagick-Handbuch .
Sjoerd
10
Ich werde die -verboseFlagge hinzufügen . Ich musste DPI finden (die im Feld Auflösung sind)
GC5
für CentOS tun: yum ImageMagick installieren
ordentlich
Diese Antwort funktioniert sowohl mit JPEGs als auch mit den Informationen, die für die Installation benötigt werden.
Hugh Perkins
3
@fbrundu Wie verhält sich DPI zu einer Auflösung wie72x72
Seanny123
27

exiv2 ist "das Werkzeug", um Informationen aus Bilddateien zu erhalten:

~$exiv2 myimage.jpg

Ausgänge:

File name       : myimage.jpg
File size       : 1196944 Bytes
MIME type       : image/jpeg
Image size      : 2592 x 1944
Camera make     : LG Electronics
Camera model    : LG-P970
Image timestamp : 2013:05:19 17:27:06
Image number    : 
Exposure time   : 1/9 s
Aperture        : 
Exposure bias   : 0 EV
Flash           : Yes, compulsory
Flash bias      : 
Focal length    : 3.7 mm
Subject distance: 
ISO speed       : 745
Exposure mode   : 
Metering mode   : Average
Macro mode      : 
Image quality   : 
Exif Resolution : 
White balance   : Auto
Thumbnail       : image/jpeg, 13776 Bytes
Copyright       : 
Exif comment    :
Antonio Molinaro
quelle
21

mediainfo würde noch detailliertere Infos geben. Es ist in der Regel in den Standard-Repos unter Linux und auch über Homebrew unter OSX verfügbar.

Versuchen Sie zum Beispiel, im aktuellen Ordner zu laufen:

mediainfo *

oder

mediainfo .

Beide Befehle zeigen Informationen zu allen Mediendateien im aktuellen Ordner und in den Unterordnern an.

Informationen zu allen JPG-Bildern ab dem aktuellen Ordner anzeigen (einschließlich Unterordner):

find . -iname "*.jpg" -exec mediainfo {} \;

Es ist auch mit Audio- und Videodateien sehr nützlich, da sie die Bitrate aller Audio- / Video - Streams zeigt, Codierung algorythm, Containertyp, FOURCC Code, dh XVID, X264usw.

Es gibt auch eine GUI in Standard-Repos für alle gängigen Distributionen mit den üblichen Namen mediainfo-gui

ccpizza
quelle
19

Schauen Sie sich auch ExifTool von Phil Harvey an . ein Beispiel:

$ exiftool test.png 
ExifTool Version Number         : 8.15
File Name                       : test.png
Directory                       : .
File Size                       : 12 MB
File Modification Date/Time     : 2014:02:13 13:04:52+01:00
File Permissions                : rw-r--r--
File Type                       : PNG
MIME Type                       : image/png
Image Width                     : 2490
Image Height                    : 3424
Bit Depth                       : 8
Color Type                      : RGB
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Significant Bits                : 8 8 8
Image Size                      : 2490x3424

Übrigens wollte ich Informationen zu dpi / Auflösung über die Befehlszeile abrufen. und interessanterweise meldet manchmal keines dieser Tools dies in einem Bild (wie im obigen Snippet); Weitere Informationen hierzu finden Sie unter Ich möchte DPI mit Imagemagick ändern, ohne die tatsächliche Bytegröße der Bilddaten zu ändern - Super User - identify -verbosescheint jedoch für dasselbe Bild wie im vorherigen Snippet zu funktionieren:

$ identify -verbose test.png 
Image: test.png
  Format: PNG (Portable Network Graphics)
  Class: DirectClass
  Geometry: 2490x3424+0+0
  Resolution: 72x72
  Print size: 34.5833x47.5556
  Units: Undefined
  Type: TrueColor
  Endianess: Undefined
  Colorspace: RGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
  Channel statistics:
    Red:
      min: 8 (0.0313725)
      max: 255 (1)
      mean: 237.541 (0.931533)
      standard deviation: 37.2797 (0.146195)
      kurtosis: 21.2876
      skewness: -4.56853
    Green:
      min: 15 (0.0588235)
      max: 255 (1)
      mean: 240.007 (0.941204)
      standard deviation: 37.8264 (0.148339)
      kurtosis: 20.7241
      skewness: -4.51584
    Blue:
      min: 9 (0.0352941)
      max: 255 (1)
      mean: 240.349 (0.942547)
      standard deviation: 38.7118 (0.151811)
      kurtosis: 22.255
      skewness: -4.72275
  Image statistics:
    Overall:
      min: 8 (0.0313725)
      max: 255 (1)
      mean: 179.474 (0.703821)
      standard deviation: 108.711 (0.426316)
      kurtosis: -0.958865
      skewness: -0.995795
  Rendering intent: Undefined
  Interlace: None
  Background color: white
  Border color: rgb(223,223,223)
  Matte color: grey74
  Transparent color: black
  Compose: Over
  Page geometry: 2490x3424+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Zip
  Orientation: Undefined
  Properties:
    date:create: 2014-02-13T13:11:08+01:00
    date:modify: 2014-02-13T13:04:52+01:00
    signature: bada990d3ba29b311501146d9013d67cf36f667c6d39b1f28a72ce913924397d
  Artifacts:
    verbose: true
  Tainted: False
  Filesize: 12.52MB
  Number pixels: 8.526M
  Pixels per second: 7.894M
  User time: 1.080u
  Elapsed time: 0:02.080
  Version: ImageMagick 6.6.2-6 2012-08-17 Q16 http://www.imagemagick.org

... obwohl es etwas schwierig sein kann, die Auflösung in Einheiten von PixelsPerInch mit identify -verbose- siehe ImageMagick • View topic - Einheiten können nicht auf PixelsPerInch eingestellt werden? .

sdaau
quelle
Nizza: identify -verboseist das einzige Tool, das ich gefunden habe, das JPG-Qualität meldet. Zum Beispiel wird es sagen Quality: 90.
Tanius
15
identify -verbose image.png

identity stammt aus dem ImageMagick-Paket.

Es extrahiert auch exif Informationen vom JPEG-Bild.

Pierre-Damien
quelle
7

Sie können diesen Befehl versuchen, wenn die obigen Antworten nicht funktionieren:

rdjpgcom -verbose photo.jpg

Es zeigt Informationen wie:

JPEG-Bild ist 564w * 779h, 3 Farbkomponenten, 8 Bit pro Abtastung

Scott Chu
quelle
6

Ich habe gerade herausgefunden, dass weniger (mit lessfile / lesspipe) tatsächlich Bildinformationen anzeigen kann, indem ImageMagick im Hintergrund verwendet wird:

sudo apt-get install imagemagick
less wallpaper.jpg

Ausgabe

wallpaper.jpg JPEG 1920x1200 1920x1200+0+0 8-bit DirectClass 580KB 0.000u 0:00.000
Thanh DK
quelle
Ist das ein Witz? Ich habe das ausprobiert und es wurde eine Warnung angezeigt, in der ich gefragt wurde, ob ich wirklich eine Binärdatei lesen möchte, und dann wurde nur eine Reihe von Binärdateien angezeigt ... (mit Ubuntu 14.04)
Hugh Perkins
Sie müssen ImageMagick installieren, damit es funktioniert. Ich habe hinter den Kulissen erwähnt, dass ImageMagick verwendet wird, oder?
DK
1
Eine ziemlich blöde Methode ... Wenn Sie imageMagick installiert haben, verwenden Sie einfach den Befehl identity.
Mike Q
4

Eine andere Methode, die oben nicht veröffentlicht wurde, verwendet feh (Sie müssen es installieren):

feh -l image.jpg

Ausgabe:

NUM FORMAT  WIDTH   HEIGHT  PIXELS  SIZE(bytes) ALPHA   FILENAME
1   jpeg    1280    960     1228800 91319       -       image.jpg

Verwenden von:

feh -l *.jpg

Gibt eine Tabelle aus (wie oben), jedoch mit allen Bildinformationen (inkrementiert die NUM-Spalte). Nützlich für Skripte.

Lepe
quelle
2

Das Werkzeug, das Sie wollen, ist file.

Es zeigt eine überraschende Menge an Informationen über alle Arten von Dateien.

Die Syntax lautet:

$ file my_pic.jpg

boehj
quelle
2

Sie können verwenden:

php -r "print_r(getimagesize('file:///archives/Picture/12 farvardin/20120331_013.jpg'));"

Sie können auch ersetzen file://mithttp://

Persischer Golf
quelle
Piggy Backing auf diese können Sie das gleiche tun, aber mit Kommandozeilen-Argumenten, um es ein wenig einfacher zu bedienen. php -r "print_r(getimagesize(\$argv[1]));"
Kevin Schroeder
2

Wenn Sie sich mit PNGs beschäftigen, gibt es möglicherweise Attribute, die mit fast jeder Software schwer zu lesen sind. Für diese sollten Sie pngmeta verwenden:

pngmeta file.png

Dies ist besonders nützlich für Miniaturansichten, da nach dem FreeDesktop-Standard PNG-formatiert sein und Pfadinformationen als PNG-Attribut (Thumb :: URI) gespeichert werden sollten.

jesjimher
quelle
keine dpi in Ubuntu
typelogic