Android 图像系列: 图片的压缩
2012-06-27 17:18
573 查看
该示例可以将几M的图片压缩成几十K, 当然, 是有损压缩。 类似新浪微博中的图片压缩。
代码是在线程中写的。
下面是图片的压缩方法
代码是在线程中写的。
private Runnable bitRunnable = new Runnable() { @Override public void run() { // 在缓存文件夹中创建一个文件 String fileString = getSystemTime(); mImgName = fileString + ".jpg"; mUploadImage = "SDCard/" + mImgName; // 压缩图片 BitmapAccess baAccess = new BitmapAccess(); mLoadBitmap = baAccess.imageZoom(mLoadBitmap, 400.00); //mLoadBitmap 是我从SD卡里拿到的图片 ,压缩大小 try { FileOutputStream fos = null; fos = new FileOutputStream(mUploadImage); mLoadBitmap.compress(Bitmap.CompressFormat.JPEG, 30, fos);// 把数据写入文件 质量是百分之三十 // mBitmap.recycle(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 结束等待对话框 sendMessage(6); } };
下面是图片的压缩方法
public Bitmap imageZoom(Bitmap bitmap, double maxSize) { //获得图像输入输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); //获得当前图像的容量大小(KB) double mid = b.length / 1024; if (mid > 100) //如果该位图大小超过100KB { try { //将位图改成越 maxSize 这个大小 double i = mid / maxSize; bitmap = Bitmap.createScaledBitmap(bitmap, (int) (bitmap .getWidth() / Math.sqrt(i)), (int) (bitmap.getHeight() / Math.sqrt(i)), true); } catch (Exception e) { e.printStackTrace(); } } return bitmap; }
相关文章推荐
- android图片压缩上传系列-service篇
- Android 图像系列: 图片的裁剪与相机调用
- Android 图像系列: 图片的裁剪与相机调用
- android图片压缩上传系列-基础篇
- [小白装逼]Android图像处理(压缩+裁剪+图片选择)内附DEMO
- Android图片压缩上传系列-基础篇
- Android ImageUtils 图片工具类,包括:小米从相册调图像空指针,三星旋转照片,压缩图片,保存Bitmap到本地,获取本地视频的缩略图,毛化玻璃效果,代码以后会更新
- C#中基于GDI+(Graphics)图像处理系列之图片压缩优化
- android图片压缩上传系列-基础篇
- android下图片压缩 -- 图像处理
- Android 图像选取 图片剪裁 照相选图 照相裁剪 图像压缩 11 - 14更新
- Android图片压缩上传系列
- android图片压缩上传系列-service篇
- Android 工具类系列-BitmapUtil(图片动态压缩工具类)
- C#中基于GDI+(Graphics)图像处理系列之UEditor上传图片自动压缩优化(添加水印)
- Android图片系列-2.Android App图片压缩、裁剪分析整理
- **Android 图片处理系列:图片压缩处理
- Android 图像系列: 将本地图片加载到Drawable
- Android压缩图片到100K以下并保持不失真的高效方法
- android图片压缩终极解决方案