Как конвертировать между цветовыми моделями - PullRequest
5 голосов
/ 30 июля 2011

Я очень новичок в обработке изображений. У меня есть изображение PNG (прочитанное с использованием ImageIO.read()), которое выдает BufferedImage.TYPE_CUSTOM, когда я вызываю getType().

BufferedImage bi = ImageIO.read(new URL("file:/C:/samp1.png"));
int type =bi.getType(); //TYPE_CUSTOM for samp1.png

Теперь я хотел бы преобразовать его в одну из следующих моделей:

  1. TYPE_USHORT_GRAY
  2. TYPE_3BYTE_BGR
  3. TYPE_BYTE_GRAY
  4. TYPE_INT_RGB
  5. TYPE_INT_ARGB

Вышесказанное необходимо сделать для дальнейшей обработки изображения с использованием библиотеки, которая распознает только вышеуказанные типы.

Как преобразовать цветную модель TYPE_CUSTOM в другие модели?

Любая помощь / указатели будут высоко оценены. Если для этого нет какой-либо библиотеки, любая ссылка / публикация шагов / алгоритма была бы полезной.

Ответы [ 2 ]

11 голосов
/ 17 ноября 2011

Попробуйте это:

public static BufferedImage convert(BufferedImage src, int bufImgType) {
    BufferedImage img= new BufferedImage(src.getWidth(), src.getHeight(), bufImgType);
    Graphics2D g2d= img.createGraphics();
    g2d.drawImage(src, 0, 0, null);
    g2d.dispose();
    return img;
}
0 голосов
/ 30 июля 2011

Вы пробовали это?

BufferedImage rgbImg = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_RGB);
...