我正在使用imgscalr-lib-3.1创建缩略图,以便在我的galleria-classic相册中使用。 它减小了尺寸(像素我的意思是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();
}
你知道该怎么办吗?
谢谢。
答案 0 :(得分:3)
您将缩略图写入您从中读取原始图像的相同文件。 可能不是你想要的。
如果你想要它,但是你需要在读取之后删除或截断输入文件,以确保你不会用缩略图覆盖前几个字节,其余部分包含旧的图像数据。
截断文件的一种简单方法是使用RandomAccessFile
:
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.setLength(0);
raf.close();