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条评论