java 彩色图像转灰度图像
import java.io.File;
import java.io.IOException;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class RgbToGray {
public static void main(String[] args) throws IOException {
BufferedImage image = null;
File file = null;
try {
file = new File("C:\\Users\\朱哥哥\\Desktop\\1.png");
image = ImageIO.read(file);
transferGrayImage1(image);
transferGrayImage2(image);
} catch (IOException e) {
System.out.println(e);
}
}
public static void transferGrayImage1(BufferedImage image) throws IOException {
BufferedImage grayImage = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
for(int i=0;i<image.getWidth();i++){
for(int j=0;j<image.getHeight();j++){
int rgb = image.getRGB(i,j);
int r = (rgb >> 16) & 0xff;
int g = (rgb >> 8) & 0xff;
int b = rgb & 0xff;
int gray = (r * 299 + g * 587 + b * 114 + 500) / 1000;
rgb = (255 & 0xff) << 24 | (gray & 0xff) << 16 | (gray & 0xff) << 8 | gray & 0xff;
grayImage.setRGB(i,j,rgb);
}
}
File file = new File("C:\\Users\\朱哥哥\\Desktop\\out1.png");
ImageIO.write(grayImage,"png",file);
}
public static void transferGrayImage2(BufferedImage image) throws IOException {
BufferedImage grayImage = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
for(int i=0;i<image.getWidth();i++){
for(int j=0;j<image.getHeight();j++){
int rgb = image.getRGB(i,j);
int r = (rgb >> 16) & 0xff;
int g = (rgb >> 8) & 0xff;
int b = rgb & 0xff;
int gray = (r + g + b) / 3;
rgb = (255 & 0xff) << 24 | (gray & 0xff) << 16 | (gray & 0xff) << 8 | gray & 0xff;
grayImage.setRGB(i,j,rgb);
}
}
File file = new File("C:\\Users\\朱哥哥\\Desktop\\out2.png");
ImageIO.write(grayImage,"png",file);
}
}