กำลังทำงานบนเว็บแอปและกำลังโยกย้ายบางสิ่งจากแอปเก่า แต่ฉันเกลียดที่ฉันต้องเปิดโปรแกรมแก้ไขภาพเพื่อรับข้อมูลเกี่ยวกับภาพที่ฉันกำลังโยกย้าย สิ่งต่าง ๆ เช่นขนาดภาพ
มีเครื่องมือบรรทัดคำสั่งที่ฉันสามารถใช้สำหรับงานดังกล่าวใน Linux?
กำลังทำงานบนเว็บแอปและกำลังโยกย้ายบางสิ่งจากแอปเก่า แต่ฉันเกลียดที่ฉันต้องเปิดโปรแกรมแก้ไขภาพเพื่อรับข้อมูลเกี่ยวกับภาพที่ฉันกำลังโยกย้าย สิ่งต่าง ๆ เช่นขนาดภาพ
มีเครื่องมือบรรทัดคำสั่งที่ฉันสามารถใช้สำหรับงานดังกล่าวใน Linux?
คำตอบ:
สำหรับรูปแบบภาพบางแบบคุณสามารถใช้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
/dev/null
เป็นข้อโต้แย้งฮิฮิ
identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
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
วิธีที่ดีที่สุดในการรับข้อมูลนี้คือการใช้identify
คำสั่ง:
$ identify image.png
หรือคุณสมบัติขนาดเท่านั้น
$ identify -format "%wx%h" photo.jpg
มันเป็นส่วนหนึ่งของ ImageMagick ซึ่งคุณสามารถติดตั้งบน Ubuntu ได้เช่น:
$ sudo apt-get install imagemagick
-verbose
ธง ฉันต้องการค้นหา DPI (ที่อยู่ในการแก้ไขปัญหาภาคสนาม)
72x72
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 :
mediainfoจะให้ข้อมูลที่ละเอียดยิ่งขึ้น มันมักจะอยู่ใน repos มาตรฐานบน Linux และยังสามารถใช้ได้ผ่าน homebrew บน OSX
ลองตัวอย่างเช่นทำงานในโฟลเดอร์ปัจจุบัน:
mediainfo *
หรือ
mediainfo .
คำสั่งทั้งสองจะแสดงข้อมูลเกี่ยวกับไฟล์มีเดียทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยปัจจุบัน
แสดงข้อมูลเกี่ยวกับภาพ JPG ทั้งหมดที่เริ่มต้นจากโฟลเดอร์ปัจจุบัน (รวมถึงโฟลเดอร์ย่อย):
find . -iname "*.jpg" -exec mediainfo {} \;
นอกจากนี้ยังเป็นประโยชน์อย่างมากกับไฟล์เสียงและวิดีโอในการที่จะแสดงให้เห็นถึงอัตราบิตทุกลำธารเสียง / วิดีโอ, algorythm เข้ารหัสประเภทภาชนะรหัส FOURCC คือXVID
, X264
ฯลฯ
นอกจากนี้ยังมี GUI ที่มีอยู่ใน repos มาตรฐานสำหรับ distros สำคัญทั้งหมดที่มักจะตั้งชื่อ mediainfo-gui
นอกจากนี้ตรวจสอบ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 •ดูหัวข้อ - ไม่สามารถตั้งค่าหน่วยเป็นพิกเซลต่อนิ้วได้หรือไม่ .
identify -verbose
เป็นเครื่องมือเดียวที่ฉันพบว่ารายงานคุณภาพ JPG Quality: 90
ยกตัวอย่างเช่นมันจะบอกว่า
identify -verbose image.png
ระบุมาจากแพคเกจ ImageMagick
นอกจากนี้ยังดึงข้อมูล exif จากภาพ jpeg
คุณสามารถลองคำสั่งนี้ถ้าคำตอบข้างต้นไม่ทำงาน:
rdjpgcom -verbose photo.jpg
มันจะแสดงข้อมูลเช่น:
ภาพ JPEG คือ 564w * 779h ส่วนประกอบ 3 สี 8 บิตต่อตัวอย่าง
ฉันเพิ่งค้นพบว่าน้อยกว่า (ด้วย 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
วิธีอื่นที่ไม่ได้โพสต์ข้างต้นใช้ 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) มีประโยชน์สำหรับใช้ในสคริปต์
file
เครื่องมือที่คุณต้องการคือ
มันแสดงจำนวนข้อมูลที่น่าแปลกใจเกี่ยวกับไฟล์ทุกประเภท
ไวยากรณ์คือ:
$ file my_pic.jpg
คุณสามารถใช้ได้ :
php -r "print_r(getimagesize('file:///archives/Picture/12 farvardin/20120331_013.jpg'));"
นอกจากนี้คุณสามารถแทนที่file://
ด้วยhttp://
php -r "print_r(getimagesize(\$argv[1]));"
หากคุณกำลังรับมือกับ PNG อาจมีแอตทริบิวต์ที่ฉันพบว่าอ่านยากด้วยซอฟต์แวร์เกือบทุกชนิด สำหรับสิ่งเหล่านั้นคุณควรใช้ pngmeta:
pngmeta file.png
สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับรูปขนาดย่อเนื่องจากตามมาตรฐาน FreeDesktop ควรจัดรูปแบบ PNG และจัดเก็บข้อมูลเส้นทางเป็นแอตทริบิวต์ PNG (Thumb :: URI)
identify
ควรใช้imo แทน