关于图片压缩

【Android图片压缩(质量压缩和尺寸压缩)&Bitmap转成字符串上传】
http://blog.csdn.net/jdsjlzx/article/details/44228935

  1. 图片按比例大小压缩方法
 public static Bitmap compressScale(Bitmap image, int value) {ByteArrayOutputStream baos = new ByteArrayOutputStream();image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//判断如果图片大于xxM,进行压缩避免在生成图片 (BitmapFactory.decodeStream)时溢出if (baos.toByteArray().length / 1024 > 100){baos.reset();// 重置baos即清空baos// 这里压缩50%,把压缩后的数据存放到baos中image.compress(Bitmap.CompressFormat.JPEG, 80, baos); }ByteArrayInputStream isBm = new     ByteArrayInputStream(baos.toByteArray());BitmapFactory.Options newOpts = new BitmapFactory.Options();// 开始读入图片,此时把options.inJustDecodeBounds 设回true了newOpts.inJustDecodeBounds = true;Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);newOpts.inJustDecodeBounds = false;int w = newOpts.outWidth;int h = newOpts.outHeight;Log.i("123", w + "---------------" + h);// 现在主流手机比较多是800*480分辨率,所以高和宽我们设置为// float hh = 800f;// 这里设置高度为800f// float ww = 480f;// 这里设置宽度为480ffloat hh = 512f;float ww = 512f;// 缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可int be = 1;// be=1表示不缩放if (w > h && w > ww) {// 如果宽度大的话根据宽度固定大小缩放be = (int) (newOpts.outWidth / ww);} else if (w < h && h > hh) { // 如果高度高的话根据高度固定大小缩放be = (int) (newOpts.outHeight / hh);}if (be <= 0)be = 1;newOpts.inSampleSize = be; // 设置缩放比例// newOpts.inPreferredConfig = Config.RGB_565;//降低图片从ARGB888到RGB565// 重新读入图片,注意此时已经把options.inJustDecodeBounds 设回false了isBm = new ByteArrayInputStream(baos.toByteArray());bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);return compressImage(bitmap,value);// 压缩好比例大小后再进行质量压缩}

2、质量压缩方法

  ByteArrayOutputStream baos = new ByteArrayOutputStream();// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中image.compress(Bitmap.CompressFormat.JPEG, 100, baos); int options = 90;Log.e("123", "compressImage: " + baos.toByteArray().length / 1024);// 循环判断如果压缩后图片是否大于xxkb,大于继续压缩while (baos.toByteArray().length / 1024 > value) {  Log.e("123", "compressImage: zzz");baos.reset(); // 重置baos即清空baos//这里压缩options%,把压缩后的数据存放到baos中image.compress(Bitmap.CompressFormat.JPEG, options, baos); options -= 10;// 每次都减少10Log.e("123", "compressImage: " + baos.toByteArray().length /    1024);}//把压缩后的数据baos存放到ByteArrayInputStream中ByteArrayInputStream isBm = new    ByteArrayInputStream(baos.toByteArray()); //把ByteArrayInputStream数据生成图片Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);
//保存压缩后的图片File dir = new File(path);if (!dir.exists()) {//文件不存在,则创建文件dir.mkdirs();}File file = new File(path, "pm.png");FileOutputStream fOut = null;try {FileOutputStream out = new FileOutputStream(file);out.write(baos.toByteArray());out.flush();out.close();} catch (IOException e) {e.printStackTrace();}return bitmap;

Android关于图片压缩相关推荐

  1. Android LibJpeg图片压缩

    Android的图片压缩 Android的图片压缩的几种方式:质量压缩,尺寸压缩,采样率压缩,通过NDK调用libjpeg库进行压缩! 质量压缩 通过设置bitmap options属性,降低图片的质 ...

  2. Android的图片压缩并上传

    Android开发中上传图片很常见,一般为了节省流量会进行压缩的操作,本篇记录一下压缩和上传的方法. 图片压缩的方法 : import java.io.ByteArrayOutputStream; i ...

  3. Android之图片压缩

    转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/52485037 1. 引子 前几天跟服务端的一个妹子联调接口,服务器配置一张图片,几十K ...

  4. Android中图片压缩分析(上)

    此文章首发:https://mp.weixin.qq.com/s/QZ-XTsO7WnNvpnbr3DWQmg 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种: ...

  5. Android中图片压缩方案详解

    如感觉排版不舒服,可移步至此处查看 图片的展示可以说在我们任何一个应用中都避免不了,可是大量的图片就会出现很多的问题,比如加载大图片或者多图时的OOM问题,可以移步到Android高效加载大图.多图避 ...

  6. Android BitMap图片压缩

    最近在网上看了一些关于图片压缩的博客,自己也动手实验了一遍,也算事对图片压缩有了一个了解,打算写个博客记录一下.文末附上参考链接. Android中涉及到图片的话一般都会用到BitMap类和Bitma ...

  7. Android图片系列-2.Android App图片压缩、裁剪分析整理

    移动端常用的图片格式有PNG和JPEG,目前ios手机和大部分安卓手机拍照生成的图片默认格式都是JPEG.我们开发APP的时候通常使用的是PNG,这可能是考虑到图片质量效果.PNG图片是无损压缩格式, ...

  8. Android实现图片压缩并上传到服务器

    最近公司又叫开发了一个新项目,这个项目中上传图片用的蛮多的,于是整理一下,记录自己的心得体验 刚入手的时候,对于图片的大小还没有概念,(以前上传图片都是用户头像,对大小没什么要求),心想之间上传就是了 ...

  9. Android 高效图片压缩

    使用libjpeg-turbo进行图片压缩 1. JEPG 是什么? 相信有一部分使用 iPhone 手机用微信发送图片的时候,明明图片大小只有 1M ,但清晰度比 Android 手机 5 M 图片 ...

最新文章

  1. flash socket 发对象问题
  2. (笔记)java环境变量设置
  3. 联发科mtk和骁龙730哪个好_不惧高通挑战!联发科G90芯片发布,强势干翻骁龙730...
  4. Taro+react开发(88):大写px 控制样式
  5. 帝国CMS模板|中国历史网整站数据MIP源码下载、带Tags提取插件
  6. 实战突击:PHP项目开发案例整合(第2版)
  7. 神经网络一(Neural Network)
  8. NYOJ--114--某种序列(大数)
  9. XPS文件怎么转成Word呢
  10. 服务器 交换机 无线ap,交换机、路由器、防火墙、无线AP等和终端设备
  11. 判断DataTable中否存在指定列
  12. linux7设置广播,中标麒麟Linux7 如何关闭广播消息
  13. android渠道占有率,硬核联盟分发量在安卓渠道占比高达64%,2019年将发力四大方向...
  14. 如何用课件制作工具验证三角形内角和
  15. 写一函数,将两个字符串中的元音字母复制到另一个字符串,然后输出。
  16. android开发者mac(含M1芯片)电脑全新配置2022
  17. 从平凡到不平凡(转)
  18. 短信验证码总是发送失败是什么原因?
  19. 平安科技面试(成都应届)
  20. 整体理解抽象、封装、继承、多态

热门文章

  1. hacker入门专业术语
  2. Java Mail---SMTP协议-Java发邮件(带附件)演示过程
  3. python文件管理器_Tkinter 之文件管理器
  4. Python 第八篇:异常处理、Socket语法、SocketServer实现多并发、进程和线程、线程锁、GIL、Event、信号量、进程间通讯...
  5. 关于瞎报Access violation writing location异常的瞎解决方法
  6. 图片放上效果ImageHover.css
  7. react(let命令)
  8. 201871010123-吴丽丽《面向对象程序设计(Java)》第四周学习总结
  9. ERROR tool.ExportTool: Error during export: Export job failed!错误解析
  10. Ubuntu16.04安装GTX960闭源驱动(Dell XPS 9550)