我正在使用imgscalr-lib-3.1创建缩略图,以便在我的画廊经典相册中使用。它减少了大小(像素,我的意思是像100*100),但不是千字节(像10K, 20K)。下面是我的代码:
public static void createThumbNails(String path) throws ImageFormatException, IOException{
File image ;
FileInputStream in = null ;
JPEGImageDecoder decoder;
BufferedImage bufferedImage ;
BufferedImage outBufferedImage ;
Scalr scalr = new Scalr();
File folder = new File(path+"/images/album/award/");
File[] files = folder.listFiles();
File outputfile ;
for(File file : files){
image = file;
in = new FileInputStream(file);
decoder = JPEGCodec.createJPEGDecoder(in);
bufferedImage = decoder.decodeAsBufferedImage();
outBufferedImage = scalr.resize(bufferedImage, Scalr.Method.SPEED,100);
ImageIO.write(outBufferedImage, "jpg", file);
}
in.close();
}
你们知道该怎么做吗?谢谢你。 将缩略图写入与读取原始图像相同的文件中。这个可能不是你想要的。
如果你想要,但是你需要删除或截断输入文件后,从它读取,以确保你只是不覆盖前几个字节的缩略图,留下它的其余部分包含旧的图像数据。
截断文件的一个简单方法是使用RandomAccessFile
:
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.setLength(0);
raf.close();