Нужно сделать градацию серого. - Java
Формулировка задачи:
Помогите пожайлуста!
Есть програма нужно сделать градацию серого.
package rastr; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class rastr { public static void main(String[] args) throws IOException { BufferedImage img = ImageIO.read(new File("in.png")); int height = img.getHeight(); int width = img.getWidth(); byte[][] alpha = new byte[width][height]; byte[][] red = new byte[width][height]; byte[][] green = new byte[width][height]; byte[][] blue = new byte[width][height]; for (int x = 0; x < width;x++) { for (int y = 0; y < height;y++) { int color = img.getRGB(x, y); alpha[x][y] = (byte) (color >> 24); red[x][y] = (byte) (color >> 16); green[x][y] = (byte) (color >> 8); blue[x][y] = (byte) (color); } } // -------------------------------------------- // -------------------------------------------- BufferedImage outImg = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { int color = blue[x][y]; color += (green[x][y] << 8); color += (red[x][y] << 16); color += (alpha[x][y] << 24); outImg.setRGB(x, y, color); } } ImageIO.write(outImg, "png", new File("out img1.png")); } }
Решение задачи: «Нужно сделать градацию серого.»
textual
Листинг программы
final class gray { public static void run(java.awt.image.BufferedImage img){ int rgb, r, g, b; for(int i = 0; i < img.getWidth(); ++i){ for(int j = 0; j < img.getHeight(); ++j){ rgb = img.getRGB(i, j); r = (rgb >> 16) & 0xFF; g = (rgb >> 8) & 0xFF; b = rgb & 0xFF; r = (r * 77 + g * 150 + b * 29 + 128) / 256; g = b = r; img.setRGB(i, j, (r << 16) | (g << 8) | b); } } } } //... BufferedImage img = ImageIO.read(new File("in.png")); gray.run(img);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д