среда, 29 сентября 2010 г.

BufferedImage getType() returns 0

0 это BufferedImage.TYPE_CUSTOM. С таким типом ряд операций(ресайз/скэйл и тп) с изображением сделать проблематично -   все попытки закончатся 
- java.lang.IllegalArgumentException: Unknown image type 0
Фигня возникла при работе с PNG, причём для одинаковых файлов на разных java машинах возвращался разный тип(TYPE_3BYTE_BGR(5) на jdk 1.6.0_19 и TYPE_CUSTOM(0) на jdk 1.6.0_13 ) .
Для получения BufferedImage  использовался 





   ImageIO.read(new File(configuration.getPath()))
Нашёл следующее  лекарство - определять тип картинки ручками. Лекарство видимо будет помогать только при некоторых случаях. Тип определяется так:





bufferedImage.getColorModel().hasAlpha() ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_3BYTE_BGR;
Лекарство нашёл тут: