gpt4 book ai didi

java - swing 小程序..jtogglebutton 大小为 6mb。我怎样才能减小尺寸

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:24 24 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序将文件夹中的图像显示为缩略图,以供进一步选择和单独操作。下面是将它们添加到 Jtogglebuttons 的代码。

toglBtn=new JToggleButton(""+i,new ImageIcon(ImageIO.read(new File(listOfFiles[i].getAbsolutePath())).getScaledInstance(139, 163, BufferedImage.SCALE_SMOOTH)));

文件夹中的原始图像<100kb,但 Jtogglebutton 大小为 6mb。有什么办法可以减少这些的大小吗?目前它占用了我所有的堆空间,并且当文件超过 40 个时就会出现内存不足错误。我已经将堆大小增加到 512MB,但在使用 MAT 分析堆转储后,我认为需要减小缩略图大小来解决此错误。

有什么方法可以强制缩略图为 jpeg 吗?或者任何其他向 jtogglebuttons 添加缩略图的方法?

最终更新:我使用缩略图将按钮的大小缩小到几 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);

关于java - swing 小程序..jtogglebutton 大小为 6mb。我怎样才能减小尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14737972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com