import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class GraustufenImage { public static void main(String [] args) { String outFormat = "png"; File inputPath = new File("img/Taj_Mahal4.png"); File outputPath = new File("img/Taj_Mahal4_grau.png"); BufferedImage original_image = null; try { original_image = ImageIO.read(inputPath); System.out.println("Reading " + inputPath + " complete !"); } catch (IOException e) { System.out.println("Error: " + e); } int width = original_image.getWidth(); int height = original_image.getHeight(); System.out.println("\n" + "width = " + width + " height = " + height + "\n"); BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); newImage.createGraphics().drawImage(original_image, 0, 0, null); int p, new_p, a, r, g, b; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { p = original_image.getRGB(x, y); a = (p >> 24) & 0xFF; r = (p >> 16) & 0xFF; g = (p >> 8) & 0xFF; b = p & 0xFF; int average = (r + g + b)/3; new_p = (a << 24) | (average << 16) | (average << 8) | average; newImage.setRGB(x, y, new_p); } } try { ImageIO.write(newImage, outFormat, outputPath); System.out.println("Writing " + outputPath + " complete !"); } catch(IOException e) { System.out.println("Error: " + e); System.exit(1); } System.exit(0); } }