バランサヒン:
私は、.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を保存します。