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논쟁 hehe
Aquarius Power

FWIW 이것은 내가 사진의 제작 날짜 시간을 얻는 데 사용한 것입니다 :identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
kralyk

2
의 현재 버전은 file추가 매개 변수없이 JPEG 크기 표시를 지원합니다. $ file foo.jpgreturns 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의 경우 : yum install ImageMagick
깔끔한

이 답변은 jpeg와 함께 작동하며 설치에 필요한 정보를 제공합니다.
휴 퍼킨스

3
@fbrundu DPI는 다음과 같은 해상도와 어떤 관련이 72x72
있습니까?

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 는 더 자세한 정보를 제공합니다. 일반적으로 Linux의 표준 저장소에 있으며 OSX의 homebrew를 통해 사용할 수도 있습니다.

예를 들어 현재 폴더에서 실행하십시오.

mediainfo *

또는

mediainfo .

두 명령 모두 현재 폴더와 하위 폴더의 모든 미디어 파일에 대한 정보를 표시합니다.

현재 폴더에서 시작하는 모든 JPG 이미지에 대한 정보를 표시합니다 (하위 폴더 포함).

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

그것은 모든 오디오 / 비디오 스트림을 인코딩 algorythm 컨테이너 타입 FOURCC 코드, 즉 비트 레이트의 표시한다는 점에서, 오디오 및 비디오 파일에 매우 유용하다 XVID, X264

일반적으로 이름이 지정된 모든 주요 배포판에 대해 표준 저장소에 GUI를 사용할 수 있습니다. mediainfo-gui


19

또한 Phil Harvey의 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, 나는 명령 줄에서 dpi / 해상도에 대한 정보를 얻으려고했습니다. 흥미롭게도 때로는 이러한 도구 중 어느 것도 이미지에서 위의 스 니펫과 같이보고하지 않습니다. 이에 대한 자세한 내용 은 이미지 데이터의 실제 바이트 크기를 변경하지 않고 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 단위의 해상도를 읽는 것이 약간 까다로울 수 있습니다. ImageMagickidentify -verbose 참조 • 주제보기-단위를 픽셀 단위로 설정할 수 없습니까? .


Nice : identify -verboseJPG 품질을보고 한 유일한 도구입니다. 예를 들어 Quality: 90.
tanius

15
identify -verbose image.png

식별은 ImageMagick 패키지에서 온 것입니다.

또한 jpeg 이미지에서 exif 정보를 추출합니다.


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을 설치 한 경우에는 ident 명령 만 사용하면됩니다.
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://


이것에 대한 돼지 뒷받침은 똑같은 일을 할 수 있지만 명령 줄 args를 사용하면 조금 더 쉽게 사용할 수 있습니다. php -r "print_r(getimagesize(\$argv[1]));"
Kevin Schroeder

2

PNG를 다루는 경우 거의 모든 소프트웨어에서 읽기 어려운 속성이있을 수 있습니다. 이를 위해서는 pngmeta를 사용해야합니다.

pngmeta 파일 .png

FreeDesktop 표준에 따라 PNG 형식이어야하고 경로 정보를 PNG 속성 (Thumb :: URI)으로 저장해야하므로 축소판에 특히 유용합니다.


우분투에서 dpi를 알리지 않음
typelogic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.