2011-04-26 09:28:39 +0000 2011-04-26 09:28:39 +0000
264
264

Jak uzyskać informacje o obrazku (obrazku) z linii poleceń Linuksa?

Pracuję nad web-appem i obecnie migruję kilka rzeczy ze starej aplikacji, ale nienawidzę tego, że muszę otworzyć edytor obrazów aby uzyskać informacje o obrazkach, które migruję. Rzeczy takie jak wymiary obrazów.

Czy istnieje narzędzie z linią poleceń, którego mogę użyć do takich zadań w Linuksie?

Odpowiedzi (12)

270
270
270
2011-04-26 09:40:37 +0000

Dla niektórych formatów obrazu możesz użyć komendy file:

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

Nie wszystkie formaty obrazu podają wielkość (JPEG w szczególności nie):

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

Dla tych, którzy będą musieli użyć czegoś bardziej rozbudowanego, jak:

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

Komenda convert jest częścią pakietu ImageMagick.

206
206
206
2011-12-23 14:16:38 +0000

Najlepszym sposobem na uzyskanie tych informacji jest użycie komendy identify:

$ identify image.png

lub tylko atributy rozmiaru

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

Jest to część ImageMagick, którą możesz zainstalować w Ubuntu tak jak:

$ sudo apt-get install imagemagick
30
30
30
2013-07-25 01:57:44 +0000

exiv2 jest “narzędziem” do uzyskiwania informacji z plików graficznych:

~$exiv2 myimage.jpg

wyjścia:

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 :
21
21
21
2011-12-23 17:22:07 +0000

mediainfo podawałoby jeszcze bardziej szczegółowe informacje. Zazwyczaj znajduje się on w standardowych repozytoriach na Linuksie, a także dostępny jest w wersji homebrew na OSX.

Spróbuj np. uruchomić w bieżącym folderze:

mediainfo *

lub

mediainfo .

Oba polecenia pokażą informacje o wszystkich plikach multimedialnych w bieżącym folderze i podfolderach.

Pokaż informacje o wszystkich obrazach JPG począwszy od aktualnego folderu (w tym o podfolderach):

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

Jest to również bardzo przydatne w przypadku plików audio i wideo, ponieważ pokazuje bitrate wszystkich strumieni audio/video, algorythm kodowania, typ kontenera, kod FOURCC, czyli XVID, X264, itd.

W standardowych repozytoriach dostępny jest również GUI dla wszystkich głównych dystrybucji o nazwie mediainfo-gui.

21
21
21
2014-02-13 12:33:36 +0000

Ponadto, sprawdź ExifTool by Phil Harvey ; przykład:

$ 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

Btw, szukałem informacji o dpi/rozdzielczości z linii poleceń; i co ciekawe, czasami żadne z tych narzędzi nie informuje, że w obrazie (jak w powyższym fragmencie); więcej na ten temat patrz Chcę zmienić DPI za pomocą Imagemagick bez zmiany rzeczywistego rozmiaru bajtów danych obrazu - Super User - jednak identify -verbose wydaje się działać dla tego samego obrazu co w poprzednim fragmencie:

$ 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

. … chociaż odczytanie rozdzielczości w jednostkach PixelsPerInch za pomocą identify -verbose - zobacz ImageMagick - View topic - Cannot set units to pixelsperinch? .

15
15
15
2012-08-31 08:29:46 +0000
identify -verbose image.png

Identyfikacja jest z pakietu ImageMagick.

Wyciąga również informacje exif z obrazu jpeg.

7
7
7
2012-10-04 09:53:14 +0000

Możesz spróbować tej komendy, jeśli powyższe odpowiedzi nie działają:

rdjpgcom -verbose photo.jpg

Pokaże ona informacje jak:

obraz JPEG jest 564w * 779h, 3 składowe koloru, 8 bitów na próbkę

6
6
6
2012-12-20 07:26:18 +0000

Właśnie odkryłem, że mniej (z mniejszym plikiem/spisem) może faktycznie wyświetlać informacje o obrazie, używając ImageMagick za sceną:

sudo apt-get install imagemagick
less wallpaper.jpg

Wyjście

wallpaper.jpg JPEG 1920x1200 1920x1200+0+0 8-bit DirectClass 580KB 0.000u 0:00.000
5
5
5
2013-01-25 04:04:20 +0000

Inną metodą nie zamieszczoną powyżej, jest użycie feh (trzeba ją zainstalować):

feh -l image.jpg

Wyjście:

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

Użycie:

feh -l *.jpg

Wyjście wyświetli tabelę (jak powyżej), ale z wszystkimi informacjami o obrazach (inkrementując kolumnę NUM). Przydatne do użycia w skryptach.

2
2
2
2013-10-15 18:30:09 +0000

Możesz użyć :

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

Również możesz wymienić file:// na http://

2
2
2
2013-12-05 09:07:51 +0000

Jeśli masz do czynienia z PNG-ami, mogą istnieć atrybuty, które trudno mi odczytać z prawie każdym oprogramowaniem. Dla tych, powinieneś użyć pngmeta:

pngmeta file.png

To jest szczególnie przydatne dla miniatur, ponieważ według standardu FreeDesktop, powinny być one sformatowane w formacie PNG i przechowywać informacje o ścieżkach jako atrybut PNG (Thumb::URI).

2
2
2
2011-04-26 09:41:00 +0000

Narzędziem, którego potrzebujesz jest file.

Pokazuje zaskakującą ilość informacji o wszystkich rodzajach plików.

Składnia jest:

$ file my_pic.jpg