Linux komut satırından bir resim (resim) hakkında nasıl bilgi alınır?


257

Bir web uygulaması üzerinde çalışıyorum ve şu anda eski bir uygulamadan bazı şeyleri geçiriyorum, ancak geçirdiğim görüntüler hakkında bilgi edinmek için bir resim düzenleyici açmak zorunda olduğum için nefret ediyorum. Görüntü boyutları gibi şeyler.

Linux'ta bu tür görevler için kullanabileceğim bir komut satırı aracı var mı?

Yanıtlar:


263

Bazı görüntü formatları için sadece şu filekomutu kullanabilirsiniz :

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

Tüm resim formatları boyutu bildirmez (en önemlisi JPEG değil):

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

Bunlar için daha ayrıntılı bir şeyler kullanmak zorunda kalacaksınız, örneğin:

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

convertKomut ImageMagick paketinin bir parçasıdır.


7
Sadece ben olabilirim ama görünen o ki, oldukça yavaş bir şekilde çalıştığı için görüntü verilerini oraya yüklüyor. imo identifyyerine kullanılmalıdır
jozxyqk

1
oh, /dev/nullbir argüman hehe
Kova Gücü

FWIW Bu, bir fotoğrafın oluşturulma identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
tarihini

2
Şu anki sürümü file, ek parametre olmadan JPEG boyutunu gösteren destekliyor: $ file foo.jpggetiriler 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
Coeur

199

Bu bilgiyi edinmenin en iyi yolu şu identifykomutu kullanmaktır :

$ identify image.png

veya yalnızca boyut özellikleri

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

Ubuntu'ya yükleyebileceğiniz ImageMagick'in bir parçası:

$ sudo apt-get install imagemagick

1
Format dizgisine ilişkin özellikler GraphicsMagick el kitabında bulunabilir .
Sjoerd

10
-verboseBayrağı ekleyeceğim . DPI (Çözünürlük alanında olan) bulmak gerekiyordu
gc5

CentOS için: yum yüklemek ImageMagick
düzenli

Bu cevap her ikisi de jpeglerle çalışır ve kurulumu için gerekli bilgileri verir.
Hugh Perkins,

3
@fbrundu DPI nasıl bir çözümle ilgili72x72
Seanny123

27

exiv2, resim dosyalarından bilgi almak için "araç" dır:

~$exiv2 myimage.jpg

çıktılar:

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

mediainfo daha ayrıntılı bilgi verirdi. Genellikle Linux'taki standart depolarda bulunur ve ayrıca OSX'teki homebrew aracılığıyla da erişilebilir.

Örneğin mevcut klasörde çalışmayı deneyin:

mediainfo *

veya

mediainfo .

Her iki komut da geçerli klasördeki ve alt klasörlerdeki tüm medya dosyaları hakkında bilgi gösterecektir.

Geçerli klasörden başlayan tüm JPG resimlerinde bilgi göster (alt klasörler dahil):

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

Tüm ses / video akışı, kodlama algorythm, konteyner tipi, FOURCC kodu, yani bit hızını gösterir ki O, aynı zamanda ses ve video dosyaları ile çok yararlıdır XVID, X264vb

Ayrıca, genellikle adlandırılan tüm ana dağıtımlar için standart repolarda bulunan bir GUI vardır. mediainfo-gui


19

Ayrıca, ExifTool'dan Phil Harvey'e göz atın ; Bir örnek:

$ 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, dpi / çözünürlük hakkında komut satırından bilgi almak istiyordum; ve ilginç olarak, bazen bu araçların hiçbiri bir görüntüde (yukarıdaki kod parçasında olduğu gibi) olduğunu bildirmez; Daha fazlası için, bkz . Görüntü verilerinin gerçek bayt boyutunu değiştirmeden DPI ile Imagemagick ile değiştirmek istiyorum - Süper Kullanıcı - ancak identify -verboseönceki snippet'te olduğu gibi aynı görüntü için çalışıyor gözüküyor:

$ 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

... bununla birlikte, çözünürlük kullanarak PixelsPerInch birimlerinde çözünürlüğü okumak biraz zor olabilir identify -verbose- ImageMagick'e bakınız • Başlık görüntüleniyor - Birimleri piksel perdesi ayarlayamıyor musunuz? .


Nice: identify -verboseJPG kalitesini rapor eden bulduğum tek araçtır. Örneğin söyleyecektir Quality: 90.
tanius

15
identify -verbose image.png

tanımla ImageMagick paketinden.

Ayrıca, jpeg görüntüsünden exif bilgilerini de ayıklar.


7

Yukarıdaki cevaplar işe yaramazsa bu komutu deneyebilirsiniz:

rdjpgcom -verbose photo.jpg

Gibi bilgi gösterecektir:

JPEG görüntü 564w * 779h, 3 renkli bileşen, örnek başına 8 bit


6

Az önce (daha az dosya / daha az boru ile) sahnenin arkasındaki ImageMagick kullanarak resim bilgilerini görüntüleyebildiğini keşfettim:

sudo apt-get install imagemagick
less wallpaper.jpg

Çıktı

wallpaper.jpg JPEG 1920x1200 1920x1200+0+0 8-bit DirectClass 580KB 0.000u 0:00.000

Bu bir şaka mı? Bunu denedim ve bana gerçekten bir ikili dosya okumak isteyip istemediğimi soran bir uyarı verdi ve ardından sadece bir demet ikili görüntülendi ... (Ubuntu 14.04 kullanarak)
Hugh Perkins

Çalışması için ImageMagick'i yüklemeniz gerekir. Sahnenin arkasında ImageMagick kullandığını söyledim, değil mi?
Thanh DK,

1
Bunu yapmanın çok aptalca bir yolu ... eğer imageMagick kurulu ise sadece tanım komutunu kullanın.
Mike Q

4

Yukarıda yayınlanmayan diğer yöntem feh kullanıyor (yüklemeniz gerekiyor):

feh -l image.jpg

Çıktı:

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

Kullanımı:

feh -l *.jpg

Bir tablo çıktısı alır (yukarıdaki gibi), ancak tüm görüntü bilgileriyle (NUM sütununu artırarak). Kodlarda kullanmak için kullanışlıdır.


2

İstediğiniz araç file.

Her türlü dosya hakkında şaşırtıcı miktarda bilgi gösterir.

Sözdizimi:

$ file my_pic.jpg


2

Kullanabilirsiniz :

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

Ayrıca file://ile değiştirebilirsinizhttp://


Piggy desteğiyle aynı şeyi yapabilirsiniz, ancak komut satırını kullanmak biraz daha kolay hale getirmek için kullanılır. php -r "print_r(getimagesize(\$argv[1]));"
Kevin Schroeder

2

PNG'lerle uğraşıyorsanız, neredeyse her yazılımla okumayı zor bulduğum özellikler olabilir. Bunlar için pngmeta kullanmalısınız:

pngmeta file.png

Bu, özellikle küçük resimler için faydalıdır, çünkü FreeDesktop standardına göre PNG formatlı olmalı ve yol bilgisini PNG niteliği olarak depolamalıdır (Thumb :: URI).


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.