2012-02-28 14 views
-1

私は300のイメージファイル名の配列を持ち、各ファイル名を新しいBufferedImageに変換したいと考えています。Java - ファイル[]アイテムをBufferedImageに変換する

300イメージ名の

配列は、このように作成されます。

//Default image directory (to convert to greyscale). 
static File dir = new File("images"); 
//Array of original image filenames. 
static File imgList[] = dir.listFiles(); 

public static void processGreyscale(){ 
    if(dir.isDirectory()){ 
     for(File img : imgList){ 
      if(img.isFile()){ 
       //functions are carried out here. 
      } 
      else{ 
       //functions are carried out here. 
      } 
     } 
    } 
} 

の線に沿って何かを使用してBufferedImage項目にすべてimgList[x]アイテムを変換する方法があります:私は解決策の下に願っています

File file = new File(new BufferedImage(imgList[0-300])); 

try { 
    image = ImageIO.read(file); 
} catch (IOException e) { 
    ... 
} 
+1

コードの第2ビットは意味をなさない、およびコンパイルされません。 Fileの配列をループし、それぞれをImageIOでロードします - 各ロードはイメージを返します。[Javaチュートリアル](http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html)を参照してください。 )これについて。 – DNA

+0

2番目の部分は、それをどのように見たいのかという理論的なコードであるため、コンパイルされません。 – MusTheDataGuy

答えて

1

は、が手伝う。

import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.image.BufferedImage; 
import java.awt.image.ImageObserver; 
public class BufferedImageBuilder { 

private static final int DEFAULT_IMAGE_TYPE = BufferedImage.TYPE_INT_RGB; 

public BufferedImage bufferImage(Image image) { 
    return bufferImage(image, DEFAULT_IMAGE_TYPE); 
} 

public BufferedImage bufferImage(Image image, int type) { 
    BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), type); 
    Graphics2D g = bufferedImage.createGraphics(); 
    g.drawImage(image, null, null); 
    waitForImage(bufferedImage); 
    return bufferedImage; 
} 

private void waitForImage(BufferedImage bufferedImage) { 
    final ImageLoadStatus imageLoadStatus = new ImageLoadStatus(); 
    bufferedImage.getHeight(new ImageObserver() { 
     public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) { 
      if (infoflags == ALLBITS) { 
       imageLoadStatus.heightDone = true; 
       return true; 
      } 
      return false; 
     } 
    }); 
    bufferedImage.getWidth(new ImageObserver() { 
     public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) { 
      if (infoflags == ALLBITS) { 
       imageLoadStatus.widthDone = true; 
       return true; 
      } 
      return false; 
     } 
    }); 
    while (!imageLoadStatus.widthDone && !imageLoadStatus.heightDone) { 
     try { 
      Thread.sleep(300); 
     } catch (InterruptedException e) { 

     } 
    } 
} 

class ImageLoadStatus { 

    public boolean widthDone = false; 
    public boolean heightDone = false; 
} 

}

関連する問題