लिनक्स कमांड-लाइन से एक छवि (चित्र) के बारे में जानकारी कैसे प्राप्त करें?


257

एक वेब-ऐप पर काम कर रहा हूं, और वर्तमान में एक पुराने ऐप से कुछ सामान ले रहा हूं, लेकिन मुझे नफरत है कि मुझे उन छवियों के बारे में कुछ जानकारी प्राप्त करने के लिए एक छवि संपादक खोलना होगा जो मैं पलायन कर रहा हूं। छवि आयाम जैसी चीजें।

क्या लिनक्स में ऐसे कार्यों के लिए मैं कमांड-लाइन टूल का उपयोग कर सकता हूं?

जवाबों:


263

कुछ छवि प्रारूपों के लिए आप केवल fileकमांड का उपयोग कर सकते हैं :

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

सभी छवि प्रारूप आकार की रिपोर्ट नहीं करते (JPEG सबसे विशेष रूप से नहीं करता है):

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

उन लोगों के लिए आपको कुछ अधिक विस्तृत उपयोग करना होगा, जैसे:

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

convertआदेश ImageMagick पैकेज का हिस्सा है।


7
बस मुझे हो सकता है लेकिन ऐसा लगता है कि इमेजमाजिक वास्तव में छवि डेटा लोड कर रहा है क्योंकि यह बहुत धीरे-धीरे चलता है। identifyइसके बजाय imo का उपयोग किया जाना चाहिए
jozxyqk

1
ओह, /dev/nullएक तर्क है हे
कुंभ पावर

FWIW यह वही है जो मैंने एक तस्वीर के निर्माण identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
डेटाइम

2
fileअतिरिक्त पैरामीटर के बिना जेपीईजी के आकार को प्रदर्शित करने के समर्थन का वर्तमान संस्करण है : $ file foo.jpgरिटर्न 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

इस जानकारी को प्राप्त करने का सबसे अच्छा तरीका है identifyकमांड का उपयोग करना :

$ identify image.png

या केवल आकार में योगदान देता है

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

यह ImageMagick का हिस्सा है, जिसे आप उबंटू की तरह स्थापित कर सकते हैं:

$ sudo apt-get install imagemagick

1
प्रारूप स्ट्रिंग के लिए ग्राफिक्स ग्राफिक्समैगिक मैनुअल में पाया जा सकता है ।
जोएर्ड

10
मैं -verboseझंडा लगाऊंगा। मुझे DPI खोजने की आवश्यकता थी (जो कि क्षेत्र संकल्प में हैं)
gc5

CentOS do के लिए: yum स्थापित करें ImageMagick
tidy

यह उत्तर दोनों jpegs के साथ काम करता है, और इसे स्थापित करने के लिए आवश्यक जानकारी देता है।
ह्यूग पर्किन्स

3
@fbrundu DPI एक संकल्प जैसे कैसे संबंधित है72x72
Seanny123

27

exiv2 चित्र फ़ाइलों से जानकारी प्राप्त करने के लिए "उपकरण" है:

~$exiv2 myimage.jpg

आउटपुट:

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 और भी विस्तृत जानकारी देगा। यह आमतौर पर लिनक्स पर मानक रिपोज में होता है, और OSX पर होमब्रे के माध्यम से भी उपलब्ध है।

वर्तमान फ़ोल्डर में चल रहे उदाहरण के लिए प्रयास करें:

mediainfo *

या

mediainfo .

दोनों कमांड वर्तमान फ़ोल्डर और सबफ़ोल्डर में सभी मीडिया फ़ाइलों पर जानकारी दिखाएंगे।

वर्तमान फ़ोल्डर से शुरू होने वाले सभी JPG छवियों पर जानकारी दिखाएं (इसमें सबफ़ोल्डर शामिल हैं):

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

यह भी ऑडियो और वीडियो फ़ाइलों के साथ बहुत उपयोगी है, में है कि यह सभी ऑडियो / वीडियो धाराओं, एन्कोडिंग algorythm, कंटेनर प्रकार, FOURCC कोड, यानी की बिटरेट से पता चलता XVID, X264आदि

आमतौर पर नामित सभी प्रमुख डिस्ट्रोस के लिए मानक रिपॉज में एक जीयूआई भी उपलब्ध है mediainfo-gui


19

इसके अलावा, फिल हार्वे द्वारा ExifTool देखें ; एक उदाहरण:

$ 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, मैं कमांड लाइन से डीपीआई / रिज़ॉल्यूशन के बारे में जानकारी प्राप्त करना चाह रहा था; और दिलचस्प बात यह है कि कभी-कभी इनमें से कोई भी उपकरण रिपोर्ट नहीं करता है कि एक छवि में (जैसे उपरोक्त स्निपेट में); उस पर और अधिक देखने के लिए, मैं छवि डेटा के वास्तविक बाइट-आकार को बदलने के बिना Imagemagick के साथ DPI को बदलना चाहता हूं - सुपर उपयोगकर्ता - हालांकि, identify -verboseपिछली स्निपेट में उसी छवि के लिए काम करता है:

$ 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

... हालाँकि, PixelsPerInch की इकाइयों में रिज़ॉल्यूशन को पढ़ना थोड़ा मुश्किल हो सकता है identify -verbose- ImageMagick देखें - विषय देखें - Pixperinch को यूनिट्स सेट नहीं कर सकते?


नीस: identify -verboseएकमात्र उपकरण है जो मैंने पाया कि जेपीजी गुणवत्ता की रिपोर्ट करता है। उदाहरण के लिए यह कहेगा Quality: 90
तानीस


7

आप इस आदेश को आजमा सकते हैं यदि उपरोक्त उत्तर काम नहीं करते हैं:

rdjpgcom -verbose photo.jpg

यह जानकारी की तरह दिखाएगा:

JPEG छवि 564w * 779h, 3 रंग घटक, 8 बिट प्रति नमूना है


6

मुझे बस इतना पता चला कि कम (कमतर / कमतर) के साथ वास्तव में दृश्य के पीछे ImageMagick का उपयोग करके छवि जानकारी प्रदर्शित कर सकते हैं:

sudo apt-get install imagemagick
less wallpaper.jpg

उत्पादन

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

क्या यह एक मजाक है? मैंने यह कोशिश की, और यह एक चेतावनी को पॉप अप करके मुझसे पूछ रहा है कि क्या मैं वास्तव में एक बाइनरी फ़ाइल पढ़ना चाहता हूं, और फिर यह सिर्फ बाइनरी का एक गुच्छा प्रदर्शित करता है ... (Ubuntu 14.04 का उपयोग करके)
ह्यूग पर्किन्स

काम करने के लिए आपको ImageMagick इंस्टॉल करना होगा। मैंने उल्लेख किया कि यह दृश्य के पीछे ImageMagick का उपयोग करता है, क्या मैंने नहीं किया?
थान डीके

1
यह करने का एक आसान तरीका है ... यदि आपके पास इमेजमैजिक इंस्टॉल है तो आइडेंटिटी कमांड का उपयोग करें।
माइक क्यू

4

अन्य विधि ऊपर पोस्ट नहीं की गई, feh का उपयोग कर रही है (आपको इसे स्थापित करने की आवश्यकता है):

feh -l image.jpg

आउटपुट:

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

का उपयोग करते हुए:

feh -l *.jpg

एक तालिका (जैसा कि ऊपर) आउटपुट करेगा, लेकिन सभी छवियों की जानकारी के साथ (एनयूएम कॉलम बढ़ाना)। लिपियों में उपयोग करने के लिए उपयोगी।


2

वह उपकरण जो आप चाहते हैं file

यह सभी प्रकार की फ़ाइलों के बारे में जानकारी का एक आश्चर्यजनक राशि दिखाता है।

वाक्य रचना है:

$ file my_pic.jpg


2

आप उपयोग कर सकते हैं :

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

इसके अलावा आप के file://साथ बदल सकते हैंhttp://


इस पर पिग्गी बैकिंग आप एक ही काम कर सकते हैं, लेकिन कमांड लाइन का उपयोग करने के लिए इसे इस्तेमाल करना थोड़ा आसान है। php -r "print_r(getimagesize(\$argv[1]));"
केविन श्रोएडर

2

यदि आप PNGs के साथ काम कर रहे हैं, तो ऐसी विशेषताएँ हो सकती हैं जिन्हें मैंने लगभग किसी भी सॉफ़्टवेयर के साथ पढ़ना मुश्किल पाया है। उन लोगों के लिए, आपको pngmeta का उपयोग करना चाहिए:

pngmeta file.png

यह विशेष रूप से थंबनेल के लिए उपयोगी है, क्योंकि, FreeDesktop मानक के अनुसार, PNG स्वरूपित होना चाहिए और PNG विशेषता के रूप में पथ जानकारी संग्रहीत करना चाहिए (अंगूठा :: URI)।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.