GraustufenImage.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import java.awt.Color;
  2. import java.awt.image.BufferedImage;
  3. import java.io.File;
  4. import java.io.IOException;
  5. import javax.imageio.ImageIO;
  6. public class GraustufenImage {
  7. public static void main(String [] args) {
  8. String outFormat = "png";
  9. File inputPath = new File("img/Taj_Mahal4.png");
  10. File outputPath = new File("img/Taj_Mahal4_grau.png");
  11. BufferedImage original_image = null;
  12. try {
  13. original_image = ImageIO.read(inputPath);
  14. System.out.println("Reading " + inputPath + " complete !"); }
  15. catch (IOException e) {
  16. System.out.println("Error: " + e);
  17. }
  18. int width = original_image.getWidth();
  19. int height = original_image.getHeight();
  20. System.out.println("\n" + "width = " + width + " height = " +
  21. height + "\n");
  22. BufferedImage newImage = new BufferedImage(width, height,
  23. BufferedImage.TYPE_INT_ARGB);
  24. newImage.createGraphics().drawImage(original_image, 0, 0, null);
  25. int p, new_p, a, r, g, b;
  26. for (int y = 0; y < height; y++) {
  27. for (int x = 0; x < width; x++) {
  28. p = original_image.getRGB(x, y);
  29. a = (p >> 24) & 0xFF; r = (p >> 16) & 0xFF;
  30. g = (p >> 8) & 0xFF; b = p & 0xFF;
  31. int average = (r + g + b)/3;
  32. new_p = (a << 24) | (average << 16) | (average << 8) | average;
  33. newImage.setRGB(x, y, new_p);
  34. }
  35. }
  36. try {
  37. ImageIO.write(newImage, outFormat, outputPath);
  38. System.out.println("Writing " + outputPath + " complete !"); }
  39. catch(IOException e) {
  40. System.out.println("Error: " + e);
  41. System.exit(1);
  42. }
  43. System.exit(0);
  44. }
  45. }