Skip to content

Instantly share code, notes, and snippets.

@Sciss
Last active May 7, 2018 20:44
Show Gist options
  • Save Sciss/5f9a17703e1c0069017ce807896792f7 to your computer and use it in GitHub Desktop.
Save Sciss/5f9a17703e1c0069017ce807896792f7 to your computer and use it in GitHub Desktop.
import javax.imageio.ImageIO
import java.awt.image.BufferedImage
////////////////////
val f = file("/data/temp/imperfect-reader.jpg") // JPEG colour
val in = ImageIO.createImageInputStream(f)
val reader = ImageIO.getImageReaders(in).next()
reader.setInput(in)
val fmt = reader.getFormatName // "JPEG"
val spec = reader.getImageTypes(0).next()
spec.getBitsPerBand(0) // 8
spec.getBufferedImageType // 5 == BufferedImage.TYPE_3BYTE_BGR
spec.getColorModel.getNumColorComponents // 3
spec.getColorModel.getPixelSize // 24
spec.getNumBands // 3
spec.getNumComponents // 3
spec.getSampleModel.getNumBands // 3
spec.getSampleModel.getSampleSize // (8, 8, 8)
val rp = reader.getDefaultReadParam.asInstanceOf[javax.imageio.plugins.jpeg.JPEGImageReadParam]
// is there a way to get compression quality?
////////////////////
val f = file("/data/temp/catalog_cover6866-45198.png") // PNG gray 8-bit
val in = ImageIO.createImageInputStream(f)
val reader = ImageIO.getImageReaders(in).next()
reader.setInput(in)
val fmt = reader.getFormatName // "png"
val spec = reader.getImageTypes(0).next()
spec.getBitsPerBand(0) // 8
spec.getBufferedImageType // 10 == BufferedImage.TYPE_BYTE_GRAY
spec.getColorModel.getNumColorComponents // 1
spec.getColorModel.getPixelSize // 8
spec.getNumBands // 1
spec.getNumComponents // 1
spec.getSampleModel.getNumBands // 1
spec.getSampleModel.getSampleSize // (8)
////////////////////
val f = file("/data/temp/foo2bw.jpg") // JPEG gray
val in = ImageIO.createImageInputStream(f)
val reader = ImageIO.getImageReaders(in).next()
reader.setInput(in)
val fmt = reader.getFormatName // "JPEG"
val spec = reader.getImageTypes(0).next()
spec.getBitsPerBand(0) // 8
spec.getBufferedImageType // 10 == BufferedImage.TYPE_BYTE_GRAY
spec.getColorModel.getNumColorComponents // 1
spec.getColorModel.getPixelSize // 8
spec.getNumBands // 1
spec.getNumComponents // 1
spec.getSampleModel.getNumBands // 1
spec.getSampleModel.getSampleSize // (8)
////////////////////
val f = file("/data/temp/test_mst_osc.png") // PNG colour 8-bit
val in = ImageIO.createImageInputStream(f)
val reader = ImageIO.getImageReaders(in).next()
reader.setInput(in)
val fmt = reader.getFormatName // "png"
val spec = reader.getImageTypes(0).next()
spec.getBitsPerBand(0) // 8
spec.getBufferedImageType // 5 == BufferedImage.TYPE_3BYTE_BGR
spec.getColorModel.getNumColorComponents // 3
spec.getColorModel.getPixelSize // 24
spec.getNumBands // 3
spec.getNumComponents // 3
spec.getSampleModel.getNumBands // 3
spec.getSampleModel.getSampleSize // (8, 8, 8)
////////////////////
val f = file("/data/temp/color_alpha.png") // PNG colour 8-bit with transparency
val in = ImageIO.createImageInputStream(f)
val reader = ImageIO.getImageReaders(in).next()
reader.setInput(in)
val fmt = reader.getFormatName // "png"
val spec = reader.getImageTypes(0).next()
spec.getBitsPerBand(0) // 8
spec.getBufferedImageType // 6 == BufferedImage.TYPE_4BYTE_ABGR
spec.getColorModel.getNumColorComponents // 3
spec.getColorModel.getPixelSize // 32
spec.getNumBands // 4
spec.getNumComponents // 4
spec.getSampleModel.getNumBands // 4
spec.getSampleModel.getSampleSize // (8, 8, 8, 8)
////////////////////
val f = file("/data/temp/gray_alpha.png") // PNG gray 8-bit with transparency
val in = ImageIO.createImageInputStream(f)
val reader = ImageIO.getImageReaders(in).next()
reader.setInput(in)
val fmt = reader.getFormatName // "png"
val spec = reader.getImageTypes(0).next()
spec.getBitsPerBand(0) // 8
spec.getBufferedImageType // 0 == BufferedImage.TYPE_CUSTOM
spec.getColorModel.getNumColorComponents // 1
spec.getColorModel.getComponentSize // (8, 8)
spec.getColorModel.getNumComponents // 2
spec.getColorModel.getPixelSize // 16
spec.getNumBands // 2
spec.getNumComponents // 2
spec.getSampleModel.getNumBands // 2
spec.getSampleModel.getSampleSize // (8, 8)
////////////////////
// PNG 18-bit --- GIMP 2.8 doesn't support
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment