Нужно сделать градацию серого. - Java

Узнай цену своей работы

Формулировка задачи:

Помогите пожайлуста! Есть програма нужно сделать градацию серого.
Листинг программы
  1. package rastr;
  2. import javax.imageio.ImageIO;
  3. import java.awt.image.BufferedImage;
  4. import java.io.File;
  5. import java.io.IOException;
  6. public class rastr {
  7. public static void main(String[] args) throws IOException {
  8. BufferedImage img = ImageIO.read(new File("in.png"));
  9. int height = img.getHeight();
  10. int width = img.getWidth();
  11. byte[][] alpha = new byte[width][height];
  12. byte[][] red = new byte[width][height];
  13. byte[][] green = new byte[width][height];
  14. byte[][] blue = new byte[width][height];
  15. for (int x = 0; x < width;x++) {
  16. for (int y = 0; y < height;y++) {
  17. int color = img.getRGB(x, y);
  18. alpha[x][y] = (byte) (color >> 24);
  19. red[x][y] = (byte) (color >> 16);
  20. green[x][y] = (byte) (color >> 8);
  21. blue[x][y] = (byte) (color);
  22. }
  23.  
  24. }
  25. // --------------------------------------------
  26. // --------------------------------------------
  27. BufferedImage outImg = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
  28. for (int x = 0; x < width; x++) {
  29. for (int y = 0; y < height; y++) {
  30. int color = blue[x][y];
  31. color += (green[x][y] << 8);
  32. color += (red[x][y] << 16);
  33. color += (alpha[x][y] << 24);
  34. outImg.setRGB(x, y, color);
  35. }
  36. }
  37. ImageIO.write(outImg, "png", new File("out img1.png"));
  38. }
  39. }

Решение задачи: «Нужно сделать градацию серого.»

textual
Листинг программы
  1. final class gray {
  2.     public static void run(java.awt.image.BufferedImage img){
  3.         int rgb, r, g, b;
  4.         for(int i = 0; i < img.getWidth(); ++i){
  5.             for(int j = 0; j < img.getHeight(); ++j){
  6.                 rgb = img.getRGB(i, j);
  7.                 r   = (rgb >> 16) & 0xFF;
  8.                 g   = (rgb >> 8) & 0xFF;
  9.                 b   = rgb & 0xFF;
  10.                 r   = (r * 77 + g * 150 + b * 29 + 128) / 256;
  11.                 g   = b = r;
  12.                 img.setRGB(i, j, (r << 16) | (g << 8) | b);
  13.             }
  14.         }
  15.     }
  16. }
  17.  
  18. //...
  19.  
  20. BufferedImage img = ImageIO.read(new File("in.png"));
  21. gray.run(img);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы