Javase中要显示一个图片,但是图片尺寸太大了,如何让图片能完全显示在规定区域内

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javase中要显示一个图片,但是图片尺寸太大了,如何让图片能完全显示在规定区域内相关的知识,希望对你有一定的参考价值。

参考技术A

我之前有个源码丢失了,反编译后是这样子的。

大致就是先通过 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;
        
    

追问

能告诉一下你的qq吗,我的是4 7 4 7 0 9 9 8 7

追答

你下载个 JAI (Java Advanced Image) 的 API,这是 Oracle 的官方下载 API (以前 Sun 提供的),里面有 ImageIO.read() 能读取图片到内存中的 BufferedImage 对象,之后用 scale 方法缩放就得到一个新的 BufferedImage,最后把它 myFrame.setIcon() 用上去就行了,这里 myFrame 可以是其它的像 Panel, Button 等支持 setIcon () 方法的组件。

scale(BufferedImage image, int from, int to) 这个方法就是把一个图片从原来的 from 宽度缩小成 to 宽度 (当然也可能是从 from 的高度缩小成 to 高度),这里面的缩放的等比例的。

追问

  我试了,报好多错,由于文件字数太多,这块传不上来,能和我私聊吗 大神,4 7 4 7 0 9 9 8 7

追答

贴个图出来看看,如果只是编译问题就得自己解决。这里面几个类都是 JAI 那个 jar 包中的,我当时用的时候好像不是用的最新的版本的 JDK 和 JAI。不知道那原来的东西在 Windows 7 或 JDK 7 上是不是都一样的。

用CSS3做的瀑布流的间隙太大了,怎么改小

column-gap:0;了因为不能设置负数,所以怎么把图片之间的间距改小点

您好,很高兴为您解答
css3布局间隙问题其实就是盒子模型
一个盒子有内外间距,有盒子厚度,盒子的宽高尺寸,外间距margin,内间距padding,一般间隙都是通过这两个属性来定,比如左边的间距太宽了,以前是10px,那么我们可以这样写,margin-left:5px;这样外左间距就是5像素
参考技术A margin 外边距

padding 内边距
参考技术B padding 和margin都调成0 参考技术C 你的图片的display是block么追问

是的用的是div,没有修改他的display。div们的外层是section包着

以上是关于Javase中要显示一个图片,但是图片尺寸太大了,如何让图片能完全显示在规定区域内的主要内容,如果未能解决你的问题,请参考以下文章

我用html编写网页时,设置背景图片时,好像图片太大了,不能全部显示,如果想让图片全部显示该怎么办呢?

为啥压缩的PNG图片变大了?

php 上传缩放图片

用CSS3做的瀑布流的间隙太大了,怎么改小

报OutOfMemoryError错误怎么处理

php实现等比例不失真缩放上传图片