0 0

ImageIO-图片读写5

最近在做图片读写,从服务器上读一张图片,存到手机的SD卡上。一开始是用的FileInputStream和FileOutputStream, 但很多时候图片都损坏了,我也不明白是什么原因。有人建议我用ImageReader一系列的东西,我就尝试了一下。但是报出了这么一个错误:java.lang.NoClassDefFoundError:javax.imageio.ImageIO

我看了一下ImageIO在JRE System library中,我用的是jdk1.6.0_10。从网上搜了一下错误,说是包重复,我这也没发现重复现象。所以请各位高手半个帮,我做开发时间不长,还请多多帮助。另外,存取图片,怎样解决图片失真,损坏问题呢?

代码1:获取服务器连接

public InputStream getInputStream(String serverpath) throws Exception{  
    InputStream in=null;  
      
    URL url = new URL(serverpath);  
    httpurlconnection = (HttpURLConnection) url  
            .openConnection();  
    httpurlconnection.setRequestMethod("POST");  
    httpurlconnection.setRequestProperty("Content-Type",  
            "text/html");  
    httpurlconnection.setConnectTimeout(1000);  
    httpurlconnection.setDoOutput(true);  
    httpurlconnection.setDoInput(true);  
    httpurlconnection.setUseCaches(false);  
    httpurlconnection.connect();  
    System.out.println(123);  
    in=url.openStream();  
    System.out.println(456);  
    return in;  
} 

 代码2:存取图片

    public void savepic(List<String> list,String packagename) throws Exception{  
            String filename="";  
            String url="";  
            for(int i=0;i<list.size();i++){  
                /* 
                 * ---第一张图片:图标      xxx0.png 
                 * ---第二张图片:大图1    xxx1.png 
                 * ---第三张图片:大图2    xxx2.png 
                 * ---第四张图片:star全   xxx3.png 
                 * ---第五张图片:star半   xxx4.png 
                 */  
                filename=list.get(i);  
                System.out.println(filename.split("\\.")[0]);  
                url="http://www.gyswad.com:90/push/"+filename;  
      
                InputStream inputStream=getInputStream(url);  
                  
                FileOutputStream output = null;  
    //          ByteArrayOutputStream out=null;  
                try {  
                    // 存储到SD卡  
                    File sdFile = new File(sdcard_path + "/"+packagename+"/"+ filename.split("\\.")[0]+".gif");  
                    File f1 = new File(sdcard_path);  
                    File f2=new File(sdcard_path+"/"+packagename);  
                    if (!f1.exists()) {  
                        f1.mkdir();// 创建文件夹  
                    }  
                    if(!f2.exists()){  
                        f2.mkdir();  
                    }  
                    if (!sdFile.exists()) {  
                        sdFile.createNewFile();// 创建文件  
                        // 写入文件  
                        <span style="color: #ff0000;">Iterator<ImageReader> readers=ImageIO.getImageReadersByFormatName("gif");  
                        ImageReader reader=readers.next();  
                          
                        ImageInputStream iis=ImageIO.createImageInputStream(inputStream);  
                        reader.setInput(iis,true);  
                          
                        BufferedImage bi=reader.read(0);  
                          
                        Iterator<ImageWriter> writers=ImageIO.getImageWritersByFormatName("gif");  
                        ImageWriter writer=writers.next();  
                          
                        ImageOutputStream ios=ImageIO.createImageOutputStream(sdFile);  
                        writer.setOutput(ios);  
                          
                        writer.write(bi);</span>  
    <span style="color: #ff00ff;">                  //之前是用的这种方式  
    //                  output = new FileOutputStream(sdFile);  
    //                  byte buffer[] = new byte[inputStream.available()];  
    //                  while (inputStream.read(buffer,0,buffer.length) != -1) {  
    //                      output.write(buffer);  
    //                  }  
    //                  iis.close();  
    //                  ios.close();  
                    }  
    //              if(output!=null){                     
    //                  output.flush();  
    //              }</span>  
                } catch (Exception e) {  
                    e.printStackTrace();  
                    System.out.println("savepic Exception:"+e);  
                } finally {  
                    if(inputStream!=null){  
                        inputStream.close();  
                    }  
                    if(output!=null){                 
                        output.close();  
                    }  
                    if(httpurlconnection!=null){  
                        httpurlconnection.disconnect();  
                    }  
                }  
            }  
        }  

 

 

2013年3月19日 11:52
  • 大小: 97.7 KB

2个答案 按时间排序 按投票排序

0 0

javax.imageio不在sdk里面你要图片处理可以用BitmapFactory~~~用法我不细说~你自己网上查吧~

2013年4月09日 00:30
0 0

首选这个io包是在jre中,但不是在android的sdk中。所以会出错,需要另外导入包。

另外,android提供了对图片的操作,所以不需要引入这样的包,fileoutputstream,不会导致图片损坏,猜想:可能 是多张图片写入同一个文件

2013年3月22日 15:00

相关推荐

    Java识别图片文字相关jar包 jai_imageio-1.1.1+swingx-1.6.1+ocr-1.11

    总结来说,"Java识别图片文字相关jar包 jai_imageio-1.1.1+swingx-1.6.1+ocr-1.11"提供了Java环境下实现OCR功能的基本工具,包括图像处理、用户界面构建和文本识别。开发者可以利用这些库开发出功能完善的OCR应用...

    jai_imageio-1.1-alpha.jar和swingx-1.0.jar

    综上所述,"jai_imageio-1.1-alpha.jar"和"swingx-1.0.jar"结合使用,可以构建强大的图像处理和用户界面应用,包括图片识别和验证码识别。SLF4J则确保了日志记录的便利性。在实际项目中,这两个库可以极大地提高...

    imageio-2.5.0.tar.gz

    在Python的图像处理领域,imageio是一个不可或缺的工具库,它提供了方便、强大的接口来读写多种图像和视频格式。本文将围绕"imageio-2.5.0.tar.gz"这个压缩包,详细探讨imageio库的功能、安装方法以及实际应用场景。...

    imageio-0.4.zip

    2. **新格式支持**:在0.4版本中,imageio增加了对更多图像和视频格式的支持,如WebP,一种高效的图片和动画格式,以及OpenEXR,常用于高动态范围(HDR)图像。 3. **API增强**:此版本改进了API设计,例如增加了对...

    Python-Imageio是一个Python库提供了一个简单的接口来读取和写入各种图像数据

    对于动画图像和视频,`imageio.mimread()`和`imageio.mimwrite()`函数则能方便地进行读写操作。对于更复杂的任务,如提取视频帧或对图像进行批量操作,Imageio还提供了高级功能,如迭代器和事件驱动的读取/写入。 ...

    java 图片转webp格式代码,maven项目

    项目的描述中提到了一个名为`webp-imageio-core-0.1.0`的文件,这很可能是用来读写WebP格式的第三方库。在Java中,通常通过Java Image I/O API来处理图像,但默认情况下,该API并不支持WebP格式。因此,这个特定的库...

    java高级成像 jai库

    3. **jai_imageio-1.2-pre-dr-b04.jar**:这是一个与Java Image I/O(ImageIO)相关的组件,它扩展了Java标准库中的ImageIO服务。JAI Image I/O库提供了对更多图像格式的支持,包括一些专业或罕见的格式,同时也提供...

    TwelveMonkeys:TwelveMonkeys ImageIO:Java的ImageIO的其他插件和扩展

    关于TwelveMonkeys ImageIO是Java的ImageIO的插件和扩展的集合。 这些插件使用javax.imageio.*包扩展了Java...支持的文件格式插入格式描述读写元数据笔记蜡染SVG 可缩放矢量图形 :check_mark: -- -- 需要WMF MS Windows

    图片压缩新增依赖的jar包.zip

    5. **imageio-metadata-3.6.jar**: 这个库专注于图像元数据的处理,比如EXIF数据,这在压缩图片时非常重要,因为我们需要保留或处理原始图像的元数据,如相机设置、日期时间等。 6. **imageio-core-3.6.jar**: 最后...

    JAI - 将图片转为TIF格式的依赖包

    2. jai_imageio-1.1.jar: 这个文件扩展了Java的标准I/O流(Image I/O)框架,允许读写多种图像格式,包括非标准或专业格式如TIFF。它提供了读取和写入TIFF文件的能力,支持TIFF的不同压缩算法和元数据保存。 3. jai...

    TwelveMonkeysImageIO:JavaImageIO的一个插件和扩展集合

    TwelveMonkeys ImageIO是Java ImageIO的一个强大插件和扩展集合,它极大地丰富了Java处理图像的能力,支持更多格式,并提供了更高效的读写功能。 首先,让我们深入理解TwelveMonkeys ImageIO的核心特性。这个库主要...

    java.imageIo给图片添加水印的实现代码

    Java中的`java.awt`和`java.awt.image`包提供了处理图像的基础功能,而`javax.imageio`包则用于读写图像文件。在上述代码中,我们看到了如何使用这些API来为图片添加水印,包括图片水印和文字水印。 1. **使用...

    tesseract识别中文的com.sun.media.imageio.plugins.tiff.TIFFImageWriteParam.rar

    3. **tesseract识别中文的jar-jai_imageio-1.1-alpha.jar**:Java Advanced Imaging Image I/O (JAI Image I/O) 是一个用于读写多种图像格式的Java库。在这个场景中,它可能用于帮助Tesseract处理和读取图像,特别是...

    字段里图片的读写

    本示例主要探讨如何使用SuperMap iObject和Java API来实现字段内图片的读写操作,这对于存储和展示地理信息至关重要。SuperMap是一款强大的GIS软件,其iObject接口提供了对GIS对象的灵活操作。 首先,我们要理解二...

    jai imageio+swingx+Tesseract-OCR

    ImageIO是Java标准库中的一个子模块,用于读写多种图像格式。通过JAI ImageIO,开发者可以方便地对图像进行高级操作,比如修改图片的分辨率,这在处理大量图像数据时尤其有用。 2. **SwingX**: SwingX是Java ...

    java读取raw格式的图片并显示

    Java本身并不直接支持RAW图像处理,但我们可以借助第三方库,如Apache Commons Imaging(以前称为Sanselan)或ImageIO-Ext。这些库提供了对多种RAW格式的支持,允许我们读取和解码RAW文件。 接下来,让我们探讨如何...

    numpy\imageio\moviepy\decorator\opencv-python\pillow

    2. **imageio**:这个库扩展了Python的图像读写能力,支持多种图像和视频格式。它提供了简单易用的API,允许开发者轻松地导入和导出图像或视频帧,非常适合于动态图像处理和动画制作。 3. **moviepy**:MoviePy是一...

    二进制图片的读写

    以上就是关于二进制图片读写以及结合数据库操作的基本概念和实现方式。在实际应用中,还需要考虑性能优化,如分块读写、压缩存储、使用合适的数据结构等,以提高存储效率和查询速度。同时,安全性也是一个重要的方面...

    imageio:用于读取和写入图像数据的 Python 库

    Imageio 是一个 Python 库,它提供了一个简单的界面来读写各种图像数据,包括动画图像、视频、体积数据和科学格式。 它是跨平台的,在 Python 3.5+ 上运行,并且易于安装。 通过和可以获得专业支持。 例子 这是...

    基于Java的实例源码-图片翻折,将图像压扁.zip

    在这个实例中,最核心的类可能包括`BufferedImage`(用于存储图像数据)、`Graphics2D`(用于进行图形绘制和变换)以及`ImageIO`(用于读写图像文件)。 1. **读取图像**: 使用`ImageIO.read()`方法可以读取指定...

Global site tag (gtag.js) - Google Analytics