`
jk138
  • 浏览: 149885 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

android 图片压缩

阅读更多

//对图片进行压缩
		   BitmapFactory.Options options = new BitmapFactory.Options();
		   options.inJustDecodeBounds = true;
		   
		   //获取这个图片的宽和高
		   Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/dcim/Camera/hello.jpg",options);//此时返回bm为空
		   options.inJustDecodeBounds =false;
		   //计算缩放比
		   int be = (int)(options.outHeight / (float)200);
		   if(be <= 0)
			    be =1;
		   options.inSampleSize =be;
		   //重新读入图片,注意这次要把options.inJustDecodeBounds设为false哦
		   bitmap = BitmapFactory.decodeFile("/sdcard/dcim/Camera/hello.jpg",options);
		   int w = bitmap.getWidth();
		   int h=bitmap.getHeight();
		   System.out.println(w+" "+h);
		   myImageView.setImageBitmap(bitmap);
		   
		   
		   //保存入sdCard
		   File file2= new File("/sdcard/dcim/Camera/test.jpg");
		   try {
			FileOutputStream out = new FileOutputStream(file2);
			if(bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out)){
				out.flush();
				out.close();
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		   
		   
		//读取sd卡
		   File file =new File("/sdcard/dcim/Camera/test.jpg");
		   int maxBufferSize = 16 * 1024;
			
			int len = 0;
			ByteArrayOutputStream outStream = new ByteArrayOutputStream();
			 BufferedInputStream bufferedInputStream;
			try {
				bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
				int bytesAvailable = bufferedInputStream.available();
				int bufferSize = Math.min(bytesAvailable, maxBufferSize);
				byte[] buffer = new byte[bufferSize];
				while ((len = bufferedInputStream.read(buffer)) != -1)
				{
					outStream.write(buffer, 0, bufferSize);
				}
				 data = outStream.toByteArray();
				outStream.close();
				bufferedInputStream.close();
				
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
  最近做项目,碰到一个问题,就是上传大文件,会内存溢出,我只能压缩图片进行上传啦。  这样我们就可以读取较大的图片而不会内存溢出了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics