วิธีรับข้อมูลเกี่ยวกับรูปภาพ (รูปภาพ) จากบรรทัดคำสั่ง Linux


257

กำลังทำงานบนเว็บแอปและกำลังโยกย้ายบางสิ่งจากแอปเก่า แต่ฉันเกลียดที่ฉันต้องเปิดโปรแกรมแก้ไขภาพเพื่อรับข้อมูลเกี่ยวกับภาพที่ฉันกำลังโยกย้าย สิ่งต่าง ๆ เช่นขนาดภาพ

มีเครื่องมือบรรทัดคำสั่งที่ฉันสามารถใช้สำหรับงานดังกล่าวใน Linux?

คำตอบ:


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
อาจเป็นฉันก็ได้ แต่ดูเหมือนว่า imagemagick กำลังโหลดข้อมูลภาพอยู่ที่นั่นขณะที่มันทำงานช้ามาก identifyควรใช้imo แทน
jozxyqk

1
โอ้/dev/nullเป็นข้อโต้แย้งฮิฮิ
อำนาจกุมภ์

FWIW นี่คือสิ่งที่ฉันเคยได้รับการสร้างวันที่และเวลาของภาพถ่าย:identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
kralyk

2
รุ่นปัจจุบันfileไม่สนับสนุนการแสดงขนาดของไฟล์ JPEG ได้โดยไม่ต้องพารามิเตอร์เพิ่มเติม: $ 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 ซึ่งคุณสามารถติดตั้งบน Ubuntu ได้เช่น:

$ sudo apt-get install imagemagick

1
รายละเอียดสำหรับสตริงรูปแบบที่สามารถพบได้ในคู่มือ GraphicsMagick
Sjoerd

10
ฉันจะเพิ่ม-verboseธง ฉันต้องการค้นหา DPI (ที่อยู่ในการแก้ไขปัญหาภาคสนาม)
gc5

สำหรับ CentOS do: yum ติดตั้ง ImageMagick
เรียบร้อย

คำตอบนี้ใช้ได้กับ jpegs และให้ข้อมูลที่จำเป็นในการติดตั้ง
Hugh Perkins

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จะให้ข้อมูลที่ละเอียดยิ่งขึ้น มันมักจะอยู่ใน repos มาตรฐานบน Linux และยังสามารถใช้ได้ผ่าน homebrew บน OSX

ลองตัวอย่างเช่นทำงานในโฟลเดอร์ปัจจุบัน:

mediainfo *

หรือ

mediainfo .

คำสั่งทั้งสองจะแสดงข้อมูลเกี่ยวกับไฟล์มีเดียทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยปัจจุบัน

แสดงข้อมูลเกี่ยวกับภาพ JPG ทั้งหมดที่เริ่มต้นจากโฟลเดอร์ปัจจุบัน (รวมถึงโฟลเดอร์ย่อย):

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

นอกจากนี้ยังเป็นประโยชน์อย่างมากกับไฟล์เสียงและวิดีโอในการที่จะแสดงให้เห็นถึงอัตราบิตทุกลำธารเสียง / วิดีโอ, algorythm เข้ารหัสประเภทภาชนะรหัส FOURCC คือXVID, X264ฯลฯ

นอกจากนี้ยังมี GUI ที่มีอยู่ใน repos มาตรฐานสำหรับ distros สำคัญทั้งหมดที่มักจะตั้งชื่อ mediainfo-gui


19

นอกจากนี้ตรวจสอบExifTool โดย Phil Harvey ; ตัวอย่าง:

$ 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

แต่ฉันกำลังมองหาข้อมูลเกี่ยวกับ dpi / ความละเอียดจากบรรทัดคำสั่ง และน่าสนใจบางครั้งไม่มีเครื่องมือเหล่านี้รายงานในภาพ (เช่นในตัวอย่างด้านบน); สำหรับข้อมูลเพิ่มเติมให้ดูที่ฉันต้องการเปลี่ยน DPI ด้วย Imagemagick โดยไม่ต้องเปลี่ยนขนาดข้อมูลไบต์ของข้อมูลจริง - Super User - อย่างไรก็ตาม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 •ดูหัวข้อ - ไม่สามารถตั้งค่าหน่วยเป็นพิกเซลต่อนิ้วได้หรือไม่ .


Nice: identify -verboseเป็นเครื่องมือเดียวที่ฉันพบว่ารายงานคุณภาพ JPG Quality: 90ยกตัวอย่างเช่นมันจะบอกว่า
tanius


7

คุณสามารถลองคำสั่งนี้ถ้าคำตอบข้างต้นไม่ทำงาน:

rdjpgcom -verbose photo.jpg

มันจะแสดงข้อมูลเช่น:

ภาพ JPEG คือ 564w * 779h ส่วนประกอบ 3 สี 8 บิตต่อตัวอย่าง


6

ฉันเพิ่งค้นพบว่าน้อยกว่า (ด้วย lessfile / lesspipe) สามารถแสดงข้อมูลรูปภาพโดยใช้ 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)
Hugh Perkins

คุณต้องติดตั้ง ImageMagick เพื่อให้ทำงานได้ ฉันบอกว่ามันใช้ ImageMagick อยู่หลังฉากใช่มั้ย
Thanh DK

1
ค่อนข้างเป็นวิธีที่โง่ทำ ... ถ้าคุณมีการติดตั้ง imageMagick เพียงใช้คำสั่งระบุ
Mike Q

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

จะส่งออกตาราง (ตามด้านบน) แต่มีข้อมูลรูปภาพทั้งหมด (เพิ่มคอลัมน์ NUM) มีประโยชน์สำหรับใช้ในสคริปต์


2

fileเครื่องมือที่คุณต้องการคือ

มันแสดงจำนวนข้อมูลที่น่าแปลกใจเกี่ยวกับไฟล์ทุกประเภท

ไวยากรณ์คือ:

$ file my_pic.jpg


2

คุณสามารถใช้ได้ :

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

นอกจากนี้คุณสามารถแทนที่file://ด้วยhttp://


การสำรองข้อมูล Piggy บนสิ่งนี้คุณสามารถทำสิ่งเดียวกันได้ แต่การใช้บรรทัดคำสั่งจะทำให้ใช้งานได้ง่ายขึ้นเล็กน้อย php -r "print_r(getimagesize(\$argv[1]));"
Kevin Schroeder

2

หากคุณกำลังรับมือกับ PNG อาจมีแอตทริบิวต์ที่ฉันพบว่าอ่านยากด้วยซอฟต์แวร์เกือบทุกชนิด สำหรับสิ่งเหล่านั้นคุณควรใช้ pngmeta:

pngmeta file.png

สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับรูปขนาดย่อเนื่องจากตามมาตรฐาน FreeDesktop ควรจัดรูปแบบ PNG และจัดเก็บข้อมูลเส้นทางเป็นแอตทริบิวต์ PNG (Thumb :: URI)


ไม่บอก dpi ใน ubuntu
typelogic
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.