Java - Создать новое имя файла для новых файлов BufferedImage - PullRequest
0 голосов
/ 02 февраля 2012

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

public static void makeBinary(File image) { 
try{
    //Read in original image. 
    BufferedImage inputImg = ImageIO.read(image);

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

    //New images to draw to.
    BufferedImage bimg = null;
    BufferedImage img = inputImg;

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


// ************* THIS IS WHERE I AM HAVING DIFFICULTY ***************

    //Save new binary (output) image.   
    String temp = "_inverted";
    File fi = new File("images\\" + temp + ".jpg");
    ImageIO.write(bimg, "jpg", fi);

// ******************************************************************


}
 catch (Exception e){
    System.out.println(e);
 }
}

У меня 300 изображений, пронумерованных 001.jpg -300.jpg, и я хотел бы, чтобы каждое новое выводимое изображение было названо как-то по строчке, binary_001.jpg - binary_300.jpg.

Метод, вызывающий makeBinary(), находится в другом классеи это:

public static void listFiles() {

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

    if(dir.isDirectory()){
        for(File img : imgList){
            if(img.isFile()){
                MakeBinary.makeBinary(img);
                System.out.println(img + ": processed successfully.");
            }
            else{
                System.out.println("Directory detected; skipping to next file,");
            }
        }
    }
}

Как мне добиться этого?

Большое спасибо.

Ответы [ 3 ]

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

Вы можете просто объединить имя из исходного изображения (в вашем коде 'image' вы передаете ImageIO строку "_inverted", таким образом, вы получите оригинальное имя для каждого обрабатываемого изображения: image.jpg -> image_inverted. JPG

1 голос
/ 02 февраля 2012
File fi = new File("images\\" + "binary_" + image.getName());

Нужно сделать свое дело.

Или даже лучше:

File fi = new File(image.getParent(), "binary_" + image.getName());
1 голос
/ 02 февраля 2012

Получите имя файла из вашего параметра File image и добавьте его к новому имени файла:

String temp = image.getName() + "_inverted";
File fi = new File("images\\" + temp + ".jpg");
ImageIO.write(bimg, "jpg", fi);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...