Ложный вывод с исходным изображением при попытке серого масштабирования - PullRequest
0 голосов
/ 29 сентября 2019
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);

    }     
}

Я надеюсь, что в результате будет исходным изображением, а показывает изображение в градациях серого, но в действительности получается тоже смените на оттенки серого, хотя я сначала попытался написать исходное изображение и оттенки серого

...