BufferedImage bi = ImageIO.read(new File(F:\\111.jpg"));用这个读了一个5M的JPG图一直报错 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space网上查了说ImageIO的问题,不能读大图 哪位高手有好的解决办法呢你能读取多大的图片呢

解决方案 »

  1.   

    刚开始在csdn发贴 总共就发了两篇帖子 第一篇帖子还没人回答 
    不是我不想结 是结不了啊
      

  2.   

    小弟是初次将所学的知识用的实践上  遇到的问题不少 也是刚开始在论坛发帖
    希望能得到csdn上大家的帮助  大家给点建议好吗
    小弟在此谢过了
      

  3.   

    BufferedImage 比较耗java的堆栈
    而JAVA默认的堆栈是16M
    你可以尝试用 
    -Xms160m -Xmx800m
    运行参数来扩大默认堆栈命令行运行是这样
    java -jar -Xms160m -Xmx800m xxx.jareclipse运行
    点击菜单栏的 Run————>Run Configurations
    在左侧选中的要执行的程序
    在右侧选中 Arguments
    在VM arguments里加上
    -Xms160m -Xmx800m
      

  4.   

    谢谢你  程序成功运行了
    之前一直是通过修改myeclipse.ini文件来改变JVM大小的,
    是这样配置的
    -Xmx1024m
    -Xms256m 
    -XX:MaxPermSize=256m
    -XX:ReservedCodeCacheSize=64m
    可是一直不成功这是为什么呢
      

  5.   

    这是代码:
    public class Getim {
    public static void main(String[] args) throws IOException {
    File f = new File("F:\001.jpg");
    ImageInputStream iis=new FileImageInputStream(f);
    Image bi=ImageIO.read(iis);

    System.out.println(bi.getHeight(null));
    }
    }
    我是想把图片读入内存 获取图片的长和宽 不是做上传的
      

  6.   

    如果只是这样,不一定要IO吧
    ImageIcon ico = new ImageIcon("F:\001.jpg");
    System.out.println(ico.getIconHeight());
      

  7.   


    这是配置Eclipse的内存,  不是你的程序的内存, 是你的程序报OutOfMemoryError,不是Eclipse报的
      

  8.   

    确实是不能读大图,但是5M不至于。我们那时候读的二三十兆的都没问题,上百兆的就不行了。这有赖于自己机子内存的大小和cpu的性能。
      

  9.   

    对 我只是想得到图片的长和宽 不做输出 但是你给的方法可以得到原图的长和宽吗
    我怎么感觉ImageIcon像是处理图标的类啊
      

  10.   

    可惜我只是个刚开始用java写东西的菜鸟 ........- -!
      

  11.   

    你试试,把流  flush下,这样就可以了