Java - преобразование изображения в оттенки серого с использованием массива имен файлов - PullRequest
1 голос
/ 02 февраля 2012

Можно ли передать массив имен изображений в код, который преобразует изображения в оттенки серого?

Я могу преобразовать изображение в оттенки серого, используя этот код:

public static void makeGrey() { 
try{
//Read in original image. 
BufferedImage image = ImageIO.read(new File("images\\012.jpg"));

//Obtain width and height of image.
double image_width = image.getWidth();
double image_height = image.getHeight();

BufferedImage bimg = null;
BufferedImage img = image;

//Draw the new image.      
bimg = new BufferedImage((int)image_width, (int)image_height, BufferedImage.TYPE_BYTE_GRAY);
Graphics2D gg = bimg.createGraphics();
gg.drawImage(img, 0, 0, img.getWidth(null), img.getHeight(null), null);

//Save new greyscale (output) image.
String temp = "_inverted";
File fi = new File("images\\" + temp + ".jpg");
ImageIO.write(bimg, "jpg", fi);
}
catch (Exception e){
              System.out.println(e);
}
}

Однако этот код работает только с одним файлом за раз, и я хотел бы знать, как заставить его работать со всеми файлами, расположенными в каталоге images?

Я создал массив, которыйпроходит через каталог images и хранит имена всех файлов, и я хотел бы знать, как передать эти имена файлов в мой метод makeGrey()?

    static File dir = new File("images");
    static File imgList[] = dir.listFiles();

    public static void listFiles(String imageName) {

        if(dir.isDirectory()){
            for(File img : imgList){
                if(img.isFile()){
                MakeGrey.makeGrey();
            }
        }
    }

Спасибо.

1 Ответ

2 голосов
/ 02 февраля 2012

Ваш makeGray() метод должен выглядеть следующим образом:

public static void makeGrey(File image) { 
try{
    //Read in original image. 
    BufferedImage inputImage = ImageIO.read(image);
    ...
    ...
    //Save new greyscale (output) image. (Or you'll rewrite same image all the time...)
    File fi = new File("images\\inverted_" + image.getName() 
    ...
    ...

и другая часть кода должны называться так:

static File dir = new File("images");
static File imgList[] = dir.listFiles();

public static void listFiles(String imageName) {

    if(dir.isDirectory()){
        for(File img : imgList){
            if(img.isFile()){
            MakeGrey.makeGrey(img);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...