`
Jacen-Su
  • 浏览: 980 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

ImageIO-图片存取

阅读更多

最近在做图片读写,从服务器上读一张图片,存到手机的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();// 创建文件
					// 写入文件
					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);
					//之前是用的这种方式
//					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();
//				}
			} 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();
				}
			}
		}
	}

 
  • 大小: 97.7 KB
分享到:
评论

相关推荐

    使用存取文件名的方法存取图片

    让我们深入探讨如何在不同的编程语言中使用文件路径来存取图片。 首先,理解文件路径的概念至关重要。文件路径是操作系统中找到特定文件的指南,它包含了文件所在的目录结构。例如,"C:\Users\John\Pictures\Sunset...

    iphone从摄像头相册获取图片,压缩图片,上传服务器

    通过这四个来源,我们可以存取应用程序的图片。 * 相册:iPhone 的相册包含摄像头胶卷和用户计算机同步的部分照片。用户可以通过 UIImagePickerController 类提供的交互对话框来从相册中选择图像。 * 应用程序包:...

    Java实现图片上传到服务器并把上传的图片读取出来

    - 对于图片,可以使用图片处理库(如Java的ImageIO或第三方库)来验证图片格式,避免安全漏洞。 6. **性能优化**: - 使用文件存储服务,如Amazon S3或阿里云OSS,减轻服务器存储压力。 - 使用CDN服务缓存和分发...

    三秒图片切换

    为了高效地处理图片,我们可能还需要了解图像处理库,如Java的`ImageIO`或Android的`BitmapFactory`,它们可以帮助我们解码图片文件,以便在内存中进行操作。 在读取文件时,需要注意文件路径的正确性,以及处理...

    JSP源码——图片浏览小程序(java+applet).zip

    3. **图片处理**:可能涉及Java的图像I/O库(如javax.imageio),包括读取、写入、转换和操作图像。 4. **Web开发**:HTTP协议、MVC(Model-View-Controller)设计模式、Servlet与JSP的关系、会话管理等。 5. **...

    java的一些图片,网络编程,多线程,数据结构

    HashSet和HashMap实现了Set和Map接口,提供快速的存取操作。理解并合理使用这些数据结构能优化代码性能和内存占用。 5. **异常处理**: Java使用异常处理机制来捕获和处理程序运行时的错误。异常是通过`try-catch-...

    Java课程设计汇本指导书.doc

    - 使用ImageIO类保存截取的图片到本地。 3. **扫雷游戏实现**: - 目标:开发一款与Windows扫雷游戏相似的程序,包含初级、中级和高级游戏模式。 - 技术实现: - 自定义JButton类,创建专属的按钮类。 - 应用...

    基于java的电子相册系统

    数据库设计包括用户表、相册表、图片表等,确保数据的高效存取。 4. **文件上传与存储**:用户上传的图片需要被妥善存储。系统可能使用本地文件系统或者云存储服务(如Amazon S3或Google Cloud Storage)。同时,...

    影像服务

    3. **数据库集成**:Java JDBC(Java Database Connectivity)是连接数据库的标准API,可以用于存取影像的元数据,如文件名、大小、上传时间等。而ORM框架如Hibernate或MyBatis可以帮助开发者更高效地操作数据库。 ...

Global site tag (gtag.js) - Google Analytics