• Android学习之图片压缩,压缩程度高且失真度小


            曾经在做手机上传图片的时候。直接获取相机拍摄的原图上传,原图大小一般1~2M。因此上传一张都比較浪费资源,有些场景还须要图片多张上传,所以近期查看了好多前辈写的关于图片处理的资料。然后试着改了一个图片压缩的方法。经測试用着还不错。压缩效果非常理想,主要是失真不明显。在这里分享一下。

            以下直接上代码:

    	/**
    	 * 上传server时把图片调用以下方法压缩后 保存到暂时目录 图片压缩后小于200KB。失真度不明显
    	 * 
    	 * @param path
    	 * @return
    	 * @throws IOException
    	 */
    	public static Bitmap revitionImageSize(String path) throws IOException {
    		BufferedInputStream in = new BufferedInputStream(new FileInputStream(
    				new File(path)));
    		BitmapFactory.Options options = new BitmapFactory.Options();
    		options.inJustDecodeBounds = true;
    		BitmapFactory.decodeStream(in, null, options);
    		in.close();
    		int i = 0;
    		Bitmap bitmap = null;
    		// options.inJustDecodeBounds=true那么将不返回实际的bitmap对象,不给其分配内存空间可是能够得到一些解码边界信息即图片大小等信息
    		// outHeight(图片原始高度)和 outWidth(图片的原始宽度)
    		// inSampleSize表示缩略图大小为原始图片大小的几分之中的一个
    		// options.outWidth >> i(右移运算符)表示:outWidth/(2^i)
    		while (true) {
    			if ((options.outWidth >> i <= 2000)
    					&& (options.outHeight >> i <= 2000)) {
    				in = new BufferedInputStream(
    						new FileInputStream(new File(path)));
    				options.inSampleSize = (int) Math.pow(2.0D, i); // 幂运算 i为几次方
    				options.inJustDecodeBounds = false;
    				bitmap = BitmapFactory.decodeStream(in, null, options);
    				break;
    			}
    			i += 1;
    		}
    		return bitmap;
    	}


  • 相关阅读:
    python3爬取咪咕音乐榜信息(附源代码)
    python3通过Beautif和XPath分别爬取“小猪短租-北京”租房信息,并对比时间效率(附源代码)
    在windows7 32ibt安装MongoDB数据库的方法及连接失败解决方案
    GoWeb开发_Iris框架讲解(一)
    Web项目开发介绍及实战项目介绍
    DAY7学习笔记
    DAY6课下作业
    DAY6学习笔记
    DAY5课下作业
    DAY5学习笔记
  • 原文地址:https://www.cnblogs.com/llguanli/p/7112740.html
Copyright © 2020-2023  润新知