Java-将文件[]项转换为BuffereImage
我有一个300个图像文件名的数组,希望将每个文件名转换成一个新的BuffereImage 创建了300个图像名称的数组,因此:Java-将文件[]项转换为BuffereImage,java,file,image-processing,bufferedimage,Java,File,Image Processing,Bufferedimage,我有一个300个图像文件名的数组,希望将每个文件名转换成一个新的BuffereImage 创建了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 vo
//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.
}
}
}
}
是否有一种方法可以将所有imgList[x]
项转换为buffereImage
项,方法如下:
File file = new File(new BufferedImage(imgList[0-300]));
try {
image = ImageIO.read(file);
} catch (IOException e) {
...
}
我希望下面的解决方案能对您有所帮助
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;
}
}第二位代码没有意义,无法编译。在文件数组上循环,用ImageIO加载每个文件-每次加载都会返回一个图像…请参阅上面的。第二部分不会编译,因为它是我希望它看起来如何的理论代码。