Я знаю, что его можно преобразовать изображение в CS_GRAY используяJava Преобразовать ColorSpace из BufferedImage в CS_GRAY без использования ConvertColorOp
public static BufferedImage getGrayBufferedImage(BufferedImage image) {
BufferedImageOp op = new ColorConvertOp(ColorSpace
.getInstance(ColorSpace.CS_GRAY), null);
BufferedImage sourceImgGray = op.filter(image, null);
return sourceImgGray;
}
однако, это перегруженный всей моей программы. Мне нужно делать это часто, на изображениях 800x600 пикселей и занимает около 200-300 мсек для выполнения этой операции в среднем. Я знаю, что я могу сделать это намного быстрее, используя один цикл для циклического преобразования данных изображения и сразу же установив его. С другой стороны, код выше создает новый 800x600 BufferedImage, который является серой шкалой. Я бы предпочел просто преобразовать изображение, которое я передаю.
Кто-нибудь знает, как это сделать с циклом for и учитывая, что изображение является цветовым пространством RGB?