JAVA实现图像灰度化
原创
52cxy
07-22 15:38
阅读数:1011
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条评论