我正在开发一个应用程序,它在文件夹中获取图像并将它们显示为缩略图以供进一步选择和单独操作。下面是将它们添加到Jtogglebutton的代码。
toglBtn=new JToggleButton(""+i,new ImageIcon(ImageIO.read(new File(listOfFiles[i].getAbsolutePath())).getScaledInstance(139, 163, BufferedImage.SCALE_SMOOTH)));
我在文件夹中的原始图像是
有什么方法可以强制缩略图为jpeg吗?或任何其他将缩略图添加到jtogglebutton的方法?
最终更新:我使用thumbnailator将按钮的大小缩小到几kb
try{
BufferedImage originalImage = ImageIO.read(new File(listOfFiles[i].getAbsolutePath()));
Image image =Thumbnails.of(originalImage).size(138, 163).asBufferedImage();
toglBtn=new JToggleButton(""+i,new ImageIcon(image));
}
也许你的Java是保留原始图像、缩放图像和图像图标在内存中。
通过这种方式分解代码可以确保原始图像和缩放图像被丢弃以用于垃圾回收机制。
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JToggleButton;
String text = "" + i;
File imageFile = new File(listOfFiles[i].getAbsolutePath());
BufferedImage image = ImageIO.read(imageFile);
Image scaledImage = image.getScaledInstance(139, 163,
BufferedImage.SCALE_SMOOTH);
ImageIcon imageIcon = new ImageIcon(scaledImage);
toglBtn = new JToggleButton(text, imageIcon);