
Toolkit tk = Toolkit.getDefaultToolkit()
private Image bground = tk.createImage("D://workpalce//MarketManagement//src//images//bgd2.gif")
protected void paintComponent(Graphics g) {
g.drawImage(bground, 0, 0, this.getWidth(), this.getHeight(), this)
}
我之前有个源码丢失了,反编译后是这样子的。
大致就是先通过 Java Advanced Image IO (JAI, 在 Oracle 上下载) 把图片读取到内存,然后缩放后设置成 ImageIcon 显示到一个 Panel 上。直接让 Swing 自己读取图片时好像不会自动缩放的。
FileInputStream input = new FileInputStream(path)BufferedImage image = ImageIO.read(input)
image = scale(image, width, max)
ProductFrame.this.setIcon(new ImageIcon(image))
private BufferedImage scale(BufferedImage image, int from, int to)
{
if(from > to)
{
double scale = (double)to / (double)from
ParameterBlock pb = new ParameterBlock()
pb.addSource(image)
pb.add(scale)
pb.add(scale)
pb.add(0.0D)
pb.add(0.0D)
RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY)
RenderedOp resizedImage = JAI.create("SubsampleAverage", image, Double.valueOf(scale), Double.valueOf(scale), qualityHints)
return resizedImage.getAsBufferedImage()
} else
{
return image
}
}
不知道你说的特定jre是什么意思,不是一个只有有限功能的jre,比如嵌入式平台,如果是这样我建议你先用标准javase开发一个程序然后把图片变成数组存到文件里去,然后你直接读这个文件就可以了。可以用BufferedImage的getRGB(int x, int y)来获得每一个点得像素值然后存入到文本文件,你的程序只要读这个文本就可以了。当然你可以再你那个专用jre上在加入一个Jpg读取功能,不过如果他本身不支持,你加上去就费劲很多。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)