JAVA实现图像灰度化
原创 52cxy 07-22 15:38 阅读数:717

JAVA实现图像灰度化代码

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class GrayScaleImage {
    public static void main(String[] args) {
        try {
            // 读取原始图像
        String inputFilePath = "E:\\test\\sample.png";
        String outputFilePath = "E:\\test\\output.png";
            BufferedImage original = ImageIO.read(new File(inputFilePath));
            // 创建灰度图像副本
            BufferedImage grayScale = new BufferedImage(original.getWidth(), original.getHeight(),
                    BufferedImage.TYPE_BYTE_GRAY);
            // 将原始图像转换为灰度图像
            for (int y = 0; y < original.getHeight(); y++) {
                for (int x = 0; x < original.getWidth(); x++) {
                    // 获取像素的颜色值
                    Color color = new Color(original.getRGB(x, y));
                    // 计算灰度值
                    int grayValue = (int) (0.2126 * color.getRed() + 0.7152 * color.getGreen()
                            + 0.0722 * color.getBlue());
                    // 创建灰度颜色对象
                    Color grayColor = new Color(grayValue, grayValue, grayValue);
                    // 在灰度图像上设置像素值
                    grayScale.setRGB(x, y, grayColor.getRGB());
                }
            }
            // 保存灰度图像
            File outputFile = new File(outputFilePath);
            ImageIO.write(grayScale, "png", outputFile);
            System.out.println("灰度处理已完成。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


代码说明:

第一步:导入必要的类:我们使用了BufferedImage来处理图像,Color来处理像素的颜色信息,以及ImageIO来读取和写入图像文件。

第二步:读取原始图像:使用ImageIO.read(new File("input.jpg"))从文件系统中读取输入图像。

第三步:创建灰度图像副本:使用BufferedImage.TYPE_BYTE_GRAY创建一个灰度图像的副本,它的宽度和高度与原始图像相同。

第四步:灰度化处理:双层循环遍历原始图像的每个像素。对于每个像素,我们计算灰度值。灰度值计算公式为:grayValue = 0.2126 * R + 0.7152 * G + 0.0722 * B,其中R, G, B分别是像素的红、绿、蓝通道的值。

第五步:设置灰度像素值:将计算得到的灰度值设置为灰度图像中相应像素的RGB值。

第六步:保存灰度图像:使用ImageIO.write(grayScale, "jpg", outputFile)将灰度图像保存到文件系统中。

这段代码会将名为input.jpg的彩色图像转换为灰度图像,并保存为output.jpg。你可以根据需要修改输入输出的文件路径和格式。


共0条评论
我要评论