Search code examples
macosimage-processingcommand-lineimagemagickbmp

Determine bit depth of bmp file on os x


How can I determine the bit depth of a bmp file on Mac OS X? In particular, I want to check if a bmp file is a true 24 bit file, or if it is being saved as a greyscale (i.e. 8 bit) image. I have a black-and-white image which I think I have forced to be 24 bit (using convert -type TrueColor), but Imagemagick gives conflicting results:

> identify -verbose hiBW24.bmp
...
Type: Grayscale
Base type: Grayscale
Endianess: Undefined
Colorspace: Gray

> identify -debug coder hiBW24.bmp   
...
Bits per pixel: 24

A number of other command-line utilities are no help, it seems:

> file hi.bmp 
hi.bmp: data

> exiv2 hiBW24.bmp 
File name       : hiBW24.bmp
File size       : 286338 Bytes
MIME type       : image/x-ms-bmp
Image size      : 200 x 477
hiBW24.bmp: No Exif data found in the file

> mediainfo -f hi.bmp
...[nothing useful]

Solution

  • If you want a commend-line utility try sips (do not forget to read the manpage with man sips). Example:

    *terminal input*
    sips -g all /Users/hg/Pictures/2012/03/14/QRCodeA.bmp
    
    *output is:*
    /Users/hg/Pictures/2012/03/14/QRCodeA.bmp
    pixelWidth: 150
    pixelHeight: 143
    typeIdentifier: com.microsoft.bmp
    format: bmp
    formatOptions: default
    dpiWidth: 96.000
    dpiHeight: 96.000
    samplesPerPixel: 3
    bitsPerSample: 8
    hasAlpha: no
    space: RGB
    

    I think the result contains the values you are after.

    Another way is to open the image with the previewer preview.app and the open the info panel.

    One of the most informative programs (but not easy to use) is exiftool by Phil Harvey http://www.sno.phy.queensu.ca/~phil/exiftool/ , which also works very well on MacOSX for a lot of file formats but maybe an overkill for your purpose.