Javaで画像のグレースケールを得ることができません

バランサヒン:

私は、.jpgファイルのグレースケールを得ることに問題があります。私は灰色のスケーリングされたように、新しい.jpgファイルを作成しようとしていますが、私はちょうどより多くの画像は何もコピーしないのです。ここに私のコードは次のとおりです。

package training01;

import java.awt.*;
import java.awt.image.BufferedImage;

import java.io.*;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class GrayScale {
    BufferedImage image;
    int width;
    int height;
    public GrayScale() {
        try {
            File input = new File("digital_image_processing.jpg");
            image = ImageIO.read(input);
            width = image.getWidth();
            height = image.getHeight();
            for(int i = width;i < width;i++) {
                for(int j = height;j < height;j++) {
                    Color c =  new Color(image.getRGB(i, j));
                    int red = c.getRed();
                    int green = c.getGreen();
                    int blue = c.getBlue();
                    int val = (red+green+blue)/3;
                    Color temp = new Color(val,val,val);
                    image.setRGB(i, j, temp.getRGB());
                }
            }
            File output = new File("digital_image_processing1.jpg");
            ImageIO.write(image, "jpg", output);
        }catch(Exception e) {
            System.out.println(e);
        }
    }
    public static void main(String[] args) {
        GrayScale gs = new GrayScale();
    }
}
WJS:

あなたは次のことを変更する必要があります。あなたのi、jは0で起動します。

      for(int i = width;i < width;i++) {  
         for(int j = height;j < height;j++) {

しかし、ここでそれを行うにはより高速な方法です。グレースケールに設定されている新しいBufferedImageオブジェクトにそれを書きます。

      image = ImageIO.read(input);
      width = image.getWidth();
      height = image.getHeight();
      bwImage = new BufferedImage(width,
            height, BufferedImage.TYPE_BYTE_GRAY);
      Graphics g = bwImage.getGraphics();
            g.drawImage(image,0,0,null);

そして、bwImageを保存します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=370953&siteId=1