使用ImageIO.read和paintComponents()的JAVA
我编写了一个类,它帮助我从一个大的类中获取32x32个图像。但我有个问题。我的班级是这样的:使用ImageIO.read和paintComponents()的JAVA,java,javax.imageio,Java,Javax.imageio,我编写了一个类,它帮助我从一个大的类中获取32x32个图像。但我有个问题。我的班级是这样的: package tool; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageLoader { private String file; private Buffer
package tool;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageLoader {
private String file;
private BufferedImage image;
private BufferedImage[][] subImage;
public ImageLoader(String FILE) {
file = FILE;
try {
image = ImageIO.read(new File(file));
} catch (IOException e) {
}
subImage = new BufferedImage[image.getWidth() / 32][image.getHeight() / 32];
for (int i = 0; i < image.getWidth() / 32; i++) {
for (int j = 0; j < image.getHeight() / 32; j++) {
subImage[i][j] = image.getSubimage(i * 32, j * 32, (1 + i) * 32, (1 + j) * 32);
}
}
}
public BufferedImage getSubImage(int X, int Y) {
return subImage[X][Y];
}
}
打包工具;
导入java.awt.image.buffereImage;
导入java.io.File;
导入java.io.IOException;
导入javax.imageio.imageio;
公共类图像加载器{
私有字符串文件;
私有缓冲图像;
私有缓冲区映像[][]子映像;
公共图像加载器(字符串文件){
文件=文件;
试一试{
image=ImageIO.read(新文件(File));
}捕获(IOE异常){
}
subImage=new BufferedImage[image.getWidth()/32][image.getHeight()/32];
对于(int i=0;i
如果我这样做的话,ImageIO.read(新文件(字符串文件))
命令似乎会阻止使用我想要绘制图像的Swing对象的paintComponent()
。我做了一点实验,发现当您在getSubImage(intx,inty)
方法中加载图像时,效果很好。但我认为,这不是最聪明的想法,因为如果调用该方法,您总是再次加载此图像。我需要帮助,如何只加载一次图像,如何让Swing对象正确绘制所有内容
提前感谢。将缩略图写入并加载回JLabel中
//get the large file and create a new 32x32 thumbnail
BufferedImage sourceImage = ImageIO.read(new FileInputStream("c://filename"));
Image thumbnail = sourceImage.getScaledInstance(32, 32, Image.SCALE_SMOOTH);
BufferedImage bufferedThumbnail = new BufferedImage(thumbnail.getWidth(null),
thumbnail.getHeight(null),
BufferedImage.TYPE_INT_RGB);
bufferedThumbnail.getGraphics().drawImage(thumbnail, 0, 0, null);
//read the file back
ImageIO.write(bufferedThumbnail, "jpeg", outputStream);
//read the file back
image = ImageIO.read(new File(path));
JLabel picLabel = new JLabel(new ImageIcon(image));
ImageIO.read(文件)
如何防止使用paintComponent()
?代码中没有Swing组件。。。?