0
私は2つの別々のJavaクラスを作成しました。 1つはカラー画像をグレースケールに、もう1つは画像をファイルに保存するためのものです。javaを使用して複数のカラー画像をグレースケールに変換してファイルに保存する
GrayScaleConverter
import java.io.*;
public class GrayScaleConverter {
//I started with the image I wanted (inImage)
public ImageResource makeGray(ImageResource inImage) {
//I made a blank image of the same size
ImageResource outImage = new ImageResource(inImage.getWidth(), inImage.getHeight());
//for each pixel in outImage
for (Pixel pixel: outImage.pixels()) {
//look at the corresponding pixel in inImage
Pixel inPixel = inImage.getPixel(pixel.getX(), pixel.getY());
//compute inPixel's red + inPixel's blue + inPixel's green
//divide that sum by 3 (call it average)
int average = (inPixel.getRed() + inPixel.getBlue() + inPixel.getGreen())/3;
//set pixel's red to average
pixel.setRed(average);
//set pixel's green to average
pixel.setGreen(average);
//set pixel's blue to average
pixel.setBlue(average);
}
//outImage is your answer
return outImage;
}
public void selectAndConvert() {
DirectoryResource dr = new DirectoryResource();
for (File f : dr.selectedFiles()) {
ImageResource inImage = new ImageResource(f);
ImageResource gray = makeGray(inImage);
gray.draw();
}
}
public void testGray() {
ImageResource ir = new ImageResource();
ImageResource gray = makeGray(ir);
gray.draw();
}
}
ImageSaver
import java.io.File;
public class ImageSaver {
public void doSave() {
DirectoryResource dr = new DirectoryResource();
for(File f : dr.selectedFiles()){
ImageResource image = new ImageResource(f);
String fname = image.getFileName();
String newName = "copy -" + fname;
image.setFileName(newName);
image.draw();
image.save();
}
}
}
私はそのようにこの2つのクラスからコードを組み合わせる方法を知っていただきたいと思います。これは、私はクラスのために書いたコードです複数のカラー画像を選択してグレースケールに変換し、新しいグレースケールコピーを別々のファイルに同時に保存することができます。
コードのこのセクションで行ったことを正確に説明してください。Imagesaver ImageSaver = new ImageSaver(); ?私は以前これが行われたことを見たことがないし、あなたがオブジェクトを作成し、クラスImageSaverと同じ名前を付けたように見える。また、継承を使用して同じ結果を達成することもできます。例えば、publicクラスGrayScaleConverterはImageSaverを拡張し、次にdoSave()メソッドを呼び出します。私はgray.doSave()を使ってみましたが、シンボルを見つけることができないというエラーメッセージが出ました。 –
@ J.Marsはいオブジェクトを作成しましたが、名前は同じではありません。オブジェクト名の最初の文字は小文字(小文字)です.Javaは大文字と小文字を区別しています。 'GrayScaleConverter'が' ImageSaver'を拡張している場合、この行を削除して 'doSave()'を直接呼び出してください。 – Yazan