Решение:
Первый метод: (Эта версия требует OpenCV .jar)
public static void main(String args[]) {
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
String file = "AbsolutePathToTheSRCImage2.png";
Mat src = Imgcodecs.imread(file);
Mat dst = new Mat();
Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2GRAY);
Imgcodecs.imwrite("AbsolutePathToTheDSTImage2", dst);
}
Если вы не хотите использовать библиотеку OpenCV, вы можете использовать следующий классический метод:
Второй метод:
BufferedImage img = new BufferedImage(width, height,BufferedImage.TYPE_BYTE_GRAY);
WritableRaster raster = img.getRaster();
WritableRaster rasterJPEG = image.getRaster();
for(int h=0; h<height; h++)
for(int w=0; w<width; w++) {
int[] p = new int[4];
rasterJPEG.getPixel(w, h, p);
p[0] = (int) (0.3 * p[0]);
p[1] = (int) (0.59 * p[1]);
p[2] = (int) (0.11 * p[2]);
int y = p[0] + p[1] + p[2];
raster.setSample(w,h,0,y);
}
return img;