本地(windows)测试 ImageIO.read 占用了2.2秒
服务器(solaris)上测试 ImageIO.read 占用了13.6秒      无论对图片,怎么处理,都要先转为BufferedImage 对象。 而ImageIO.read 非常慢,怎么办?
2、3秒,可以接受,13秒太慢了~  大家遇到过此问题没?
附代码:
-------------------
<%@page contentType="text/html;charset=UTF-8" %>
<%@page import="java.io.*"%>
<%@page import="javax.imageio.*"%>
<%@page import="java.awt.image.*"%><%
File f=new File(application.getRealPath("/DSC_3565.jpg"));long lo=System.currentTimeMillis();BufferedImage bi=ImageIO.read(f);lo=System.currentTimeMillis()-lo;out.print("时间:"+lo);
%>

解决方案 »

  1.   

    我不知道你是什么样的图片。代码和你一样。
    多大的?
    //本类的功能为获取图片的长和宽
    public class ReadImgKnowWandH {
    public static void main(String[] args) throws Exception {
    new ReadImgKnowWandH().Read("d:\\2.jpg");
    }
    public void Read(String path) throws Exception{
    long lo=System.currentTimeMillis();  
    ImageIO io = null;
      //Image img = io.read(new File(path));
      BufferedImage bufImg = io.read(new File(path));
      int wi = bufImg.getWidth();          int he = bufImg.getHeight();
              System.out.println("宽为:"+wi+",长为:"+he);
              System.out.println("时间为:"+Long.toString(System.currentTimeMillis()-lo));
    }
    }
    结果:宽为:5616,长为:3744
    时间为:611
      

  2.   

    我用的是 http://www.ftz.la/res/DSC_3565.jpg 这张图片!
      

  3.   

    建议不要使用 ImageIO 来处理图片,可以在使用 ImageMagic 的软件,在 Windows 和 Linux 均有不同的版本。ImageMagic 使用 C 语言编写,功能和性能都优于 ImageIO,最关键的还提供了 JMagic 的 Java 开发包。
      

  4.   

    Windows一直用的是ImageMagic  , 但是我在solaris 上用ImageMagic 报:ld.so.1: convert: fatal: libpng14.so.14: open failed: No such file or directory
    安装libpng14 时,
    ./configure --prefix=/tmp/libpng-eagle/install又报错, 郁闷了,所以放弃ImageMagic 了!
      

  5.   

    缺少 libpng 库呗,ImageMagic 在 Unix/Linux 上使用源代码编译安装非常麻烦,要处理 N 多的依赖库,装过一次就好了,呵呵。
      

  6.   

    看看qq空间的相册,本地图片明明有好几M,3千多 * 3千多大小的尺寸
    但上传到qq服务器,图片就只有几百K,一千多 * 几百大小的尺寸了。
    不管你图片有多大,一旦上传,就会被压缩。ImageIO.read() 这个方法其实不慢的,但如果图片太大,那就没办法了,就是在windows文件夹中复制粘贴也得费时间,不慢也不行啊。
    如果图片只有几百K,你试试,保证是超快的,要相信jvm,相信java之父!所以最好的解决办法是学学qq空间,遇到超大的图片,就给它压缩一下,把图片尺寸控制在1024 * 768 之内,
    这只是个建议尺寸,具体看情况吧!还有一点,不要直接去read()网络地址url,先把图片保存到自己的服务器再read()磁盘路径,可以提高效率!这只是我个人观点,哪位大侠认为这个说法不妥,还请多多指教!
      

  7.   

    图片太大了 ImageIO需要把图片变成像素的格式6m的jpg变成像素分辨率也太高了。估计怎么弄都得10s+
    你用本地的acdsee或别的东西打开这个图片需要多长时间啊(远程打开)。
      

  8.   

    求助,java如何实现50M左右的图片压缩处理,处理后保持清晰度不变。