Skip to content

Instantly share code, notes, and snippets.

@the21st
Last active June 28, 2016 11:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save the21st/7db788d0417dbff63d6c4ba6a80b5dc8 to your computer and use it in GitHub Desktop.
Save the21st/7db788d0417dbff63d6c4ba6a80b5dc8 to your computer and use it in GitHub Desktop.
failing twelvemonkeys cmyk image load
import java.awt.color.ColorSpace
import java.io.File
import javax.imageio.stream.FileImageInputStream
import javax.imageio.{ImageIO, ImageReadParam, ImageTypeSpecifier}
import scala.collection.JavaConverters._
val file = new File("cmyk.jpg")
val iis = new FileImageInputStream(file)
val jpegReaders = ImageIO.getImageReaders(iis).asScala.toVector
val reader = jpegReaders.find { reader =>
reader.getClass.getName == "com.twelvemonkeys.imageio.plugins.jpeg.JPEGImageReader"
}.get
val cmykImage = {
reader.setInput(new FileImageInputStream(file))
val types = reader.getImageTypes(0)
val cmykType = types.asScala
.find(_.getColorModel.getColorSpace.getType == ColorSpace.TYPE_CMYK).get
val param = reader.getDefaultReadParam
param.setDestinationType(cmykType)
reader.read(0, param)
}
val rgbImage = {
reader.setInput(new FileImageInputStream(file))
val types = reader.getImageTypes(0)
val rgbType = types.asScala
.find(_.getColorModel.getColorSpace.getType == ColorSpace.TYPE_RGB).get
val param: ImageReadParam = reader.getDefaultReadParam
param.setDestinationType(rgbType)
reader.read(0, param)
}
assert(cmykImage.getRGB(4, 4) == rgbImage.getRGB(4, 4))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment