Bagaimana cara mendapatkan informasi tentang gambar (gambar) dari baris perintah Linux?

257

Saya sedang mengerjakan aplikasi web, dan saat ini sedang memigrasi beberapa hal dari aplikasi lama, tetapi saya benci saya harus membuka editor gambar untuk mendapatkan beberapa info tentang gambar yang saya migrasi. Hal-hal seperti dimensi gambar.

Apakah ada alat baris perintah yang dapat saya gunakan untuk tugas-tugas semacam itu di Linux?

nemesisfixx
sumber

Jawaban:

263

Untuk beberapa format gambar Anda cukup menggunakan fileperintah:

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

Tidak semua format gambar melaporkan ukuran (JPEG paling tidak):

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

Untuk itu Anda harus menggunakan sesuatu yang lebih rumit, seperti:

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

The convertperintah bagian dari paket ImageMagick.

Majenko
sumber
7
Bisa jadi saya tetapi tampaknya imagemagick sebenarnya memuat data gambar di sana karena berjalan cukup lambat. imo identifyharus digunakan sebagai gantinya
jozxyqk
1
oh, /dev/nullargumennya hehe
Aquarius Power
FWIW inilah yang saya gunakan untuk mendapatkan datetime pembuatan foto:identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
kralyk
2
Versi saat ini filetidak mendukung menampilkan ukuran JPEG tanpa parameter tambahan: $ file foo.jpgreturn 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

Cara terbaik untuk mendapatkan informasi ini adalah dengan menggunakan identifyperintah:

$ identify image.png

atau hanya atribut ukuran

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

Ini adalah bagian dari ImageMagick, yang dapat Anda instal di Ubuntu seperti:

$ sudo apt-get install imagemagick
Ielton
sumber
1
Spesifikasi untuk string format dapat ditemukan di manual GraphicsMagick .
Sjoerd
10
Saya akan menambahkan -verbosebendera. Saya perlu menemukan DPI (yang ada di bidang Resolusi)
gc5
untuk CentOS do: yum instal ImageMagick
rapi
Jawaban ini berfungsi dengan jpeg, dan memberikan informasi yang diperlukan untuk menginstalnya.
Hugh Perkins
3
@fbrundu bagaimana DPI berhubungan dengan resolusi seperti72x72
Seanny123
27

exiv2 adalah "alat" untuk mendapatkan informasi dari file gambar:

~$exiv2 myimage.jpg

output:

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
sumber
21

mediainfo akan memberikan info lebih rinci. Biasanya dalam repo standar di Linux, dan juga tersedia melalui homebrew di OSX.

Coba misalnya menjalankan di folder saat ini:

mediainfo *

atau

mediainfo .

Kedua perintah akan menampilkan info tentang semua file media dalam folder dan subfolder saat ini.

Tampilkan info tentang semua gambar JPG mulai dari folder saat ini (termasuk subfolder):

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

Hal ini juga sangat berguna dengan file audio dan video, dalam hal ini menunjukkan bitrate dari semua aliran audio / video, encoding algorythm, tipe kontainer, kode FourCC, yaitu XVID, X264, dll

Ada juga GUI yang tersedia di repo standar untuk semua distro utama yang biasa disebut mediainfo-gui

ccpizza
sumber
19

Juga, lihat ExifTool oleh Phil Harvey ; sebuah contoh:

$ 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, saya mencari untuk mendapatkan informasi tentang dpi / resolusi dari baris perintah; dan yang menarik, kadang-kadang tidak ada alat ini melaporkan bahwa dalam gambar (seperti dalam cuplikan di atas); untuk lebih lanjut tentang itu, lihat saya ingin mengubah DPI dengan Imagemagick tanpa mengubah ukuran byte sebenarnya dari data gambar - Pengguna Super - namun, identify -verbosetampaknya berfungsi untuk gambar yang sama seperti dalam cuplikan sebelumnya:

$ 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

... meskipun, agak sulit untuk membaca resolusi dalam satuan PixelsPerInch menggunakan identify -verbose- lihat ImageMagick • Lihat topik - Tidak dapat mengatur satuan ke pikselper inci? .

sdaau
sumber
Bagus: identify -verboseadalah satu-satunya alat yang saya temukan yang melaporkan kualitas JPG. Misalnya akan mengatakan Quality: 90.
tanius
15
identify -verbose image.png

Identifikasi berasal dari paket ImageMagick.

Itu juga mengekstrak informasi exif dari gambar jpeg.

Pierre-Damien
sumber
7

Anda dapat mencoba perintah ini jika jawaban di atas tidak berfungsi:

rdjpgcom -verbose photo.jpg

Ini akan menampilkan info seperti:

Gambar JPEG adalah 564w * 779j, 3 komponen warna, 8 bit per sampel

Scott Chu
sumber
6

Saya baru saja menemukan bahwa less (dengan lessfile / lesspipe) sebenarnya dapat menampilkan informasi gambar dengan menggunakan ImageMagick di belakang layar:

sudo apt-get install imagemagick
less wallpaper.jpg

Keluaran

wallpaper.jpg JPEG 1920x1200 1920x1200+0+0 8-bit DirectClass 580KB 0.000u 0:00.000
Thanh DK
sumber
Apakah ini lelucon? Saya mencoba ini, dan muncul peringatan yang menanyakan apakah saya benar-benar ingin membaca file biner, dan kemudian hanya menampilkan sekelompok biner ... (menggunakan Ubuntu 14.04)
Hugh Perkins
Anda harus menginstal ImageMagick agar bisa berfungsi. Saya menyebutkan bahwa ia menggunakan ImageMagick di belakang layar, bukan?
Thanh DK
1
Cara yang cukup bodoh untuk melakukannya ... jika Anda memasang imageMagick, gunakan saja perintah identifikasikan.
Mike Q
4

Metode lain yang tidak diposting di atas, menggunakan feh (Anda harus menginstalnya):

feh -l image.jpg

Keluaran:

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

Menggunakan:

feh -l *.jpg

Akan menampilkan tabel (seperti di atas) tetapi dengan semua informasi gambar (menambah kolom NUM). Berguna untuk digunakan dalam skrip.

lepe
sumber
2

Alat yang Anda inginkan adalah file.

Ini menunjukkan sejumlah info mengejutkan tentang semua jenis file.

Sintaksnya adalah:

$ file my_pic.jpg

boehj
sumber
2

Anda dapat gunakan :

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

Anda juga bisa menggantinya file://denganhttp://

Teluk Persia
sumber
Dengan mendukung Piggy, Anda dapat melakukan hal yang sama, tetapi menggunakan argumen baris perintah untuk membuatnya lebih mudah digunakan. php -r "print_r(getimagesize(\$argv[1]));"
Kevin Schroeder
2

Jika Anda berurusan dengan PNG, mungkin ada atribut yang menurut saya sulit dibaca dengan hampir semua perangkat lunak. Untuk itu, Anda harus menggunakan pngmeta:

pngmeta file.png

Itu sangat berguna untuk thumbnail, karena, menurut standar FreeDesktop, harus diformat PNG dan menyimpan informasi path sebagai atribut PNG (Thumb :: URI).

Jesjimher
sumber
tidak memberi tahu dpi apa pun di ubuntu
typelogic