import java.io.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.imageio.ImageIO;
public class TesAras {
public static BufferedImage GrayScal(BufferedImage image){
for (int i = 0; i < image.getWidth(); i++) {
for (int j = 0; j < image.getHeight(); j++) {
int ARGB = image.getRGB(i, j);
int alpha = (ARGB >> 24) & 0xff;
int red = (ARGB >> 16) & 0xff;
int green = (ARGB >> 8) & 0xff;
int blue = ARGB & 0xff;
int avg = (red + green + blue) / 3;
int ARGB2 = (avg << 24) | (avg<<16) | (avg<<8) | avg;
image.setRGB(i, j, ARGB2);
}
}
return image;
}
public static void main(String[] args) throws IOException {
File file1 = new File("images.jpg");
BufferedImage image = ImageIO.read(file1);
JFrame frame = new JFrame();
ImageIcon icon = new ImageIcon(image);
JLabel label = new JLabel(icon);
frame.add(label);
frame.setTitle("ORIGINAL");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(image.getWidth(),image.getHeight());
frame.setLocationRelativeTo(null);
frame.setVisible(true);
JFrame framegray = new JFrame();
BufferedImage imagegray = GrayScal(image);
ImageIcon icongray = new ImageIcon(imagegray);
JLabel labelgray = new JLabel(icongray);
framegray.add(labelgray);
framegray.setTitle("GRAYSCALE");
framegray.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
framegray.setSize(image.getWidth(),image.getHeight());
framegray.setLocationRelativeTo(null);
framegray.setVisible(true);
}
}
Я надеюсь, что в результате frame будет исходным изображением, а framegray показывает изображение в градациях серого, но в действительности получается frame тоже смените на оттенки серого, хотя я сначала попытался написать исходное изображение и оттенки серого