http://i.cnblogs.com/EditPosts.aspx?opt=1

android里面对于图片的处理一直是个比较烦人的问题,烦人之处在于一个不小心,就有可能造成OOM。

最近碰到一个关于图片上传的问题,图片上传我们肯定要保证2点,一点是图片的大小尽可能的小,

但是图片的清晰度又要有一定的保证,基于此我们有两个方向,一个是将图片缩小,第二个是将图片的质量降低。

对于缩小图片,我们的方法不少,可以裁剪,可以缩放;

而另一种降低图片的方法就是降低质量,使用这个方法后图片就会变得模糊,如果我们降低质量太多,会发现我们的图片都变成了很大的像素点,有过图像分析的都知道,我们的图片是由一个个像素点表示的,降低质量是通过一定的算法来的,有些可以直接使用将一个“田”的四个像素,按照我们的约定用一个值来代替,这样会将原来有区分的四个像素点变为一个没有区分的像素点,当我们降低图片的质量在肉眼不可分辨的阶段的时候,其实我们是看不出来图片的质量有什么直接的变化,但是一旦超过了我们肉眼能够识别的区域,我们就会有很直观的变化。

上面两个方法也是现在网络上流传比较多的两个方法,但是有些时候我们发现使用那两个方法其实还是达不到我们的要求,在网上找了一些方法,我觉得还不错,其中在我的一个项目中使用到了其中的一个方法。

1. 不使用jpg格式的图片,使用其他格式的图片,我看了看,发现了webp这个格式有很大的优点,

其一是这个格式的图片在保持和jpg相同信息的大小的情况下,其大小比jpg小39%(网上人家说的,具体的大小你们可以看看权威文献,我这里只是想表达大小减小了很多),看了一篇文章,说的QQ里面的表情就是使用的这个格式的图片,不过这个图片的解析比解析jpg慢大约10倍的时间(无论怎么慢可定也是不会很慢的,网上人家测试的结果我记的不是很清楚了100ms左右吧)。

在android 4.0之前官方的API里面是没有相关的方法提供的,但是4.0之后,api里面提供了相关的方法。

请参考这里的文章,写的很好:http://www.uisdc.com/image-format-webp-introduction

2. 使用so文件来压缩jpg,看过一篇文章,人家讲了微信里面为什么android版的图片和ios版的图片清晰度为什么差别那么多,人家的团队摸索了很久,好像说是android和ios都是使用了同一个包来对图片进行压缩,但是里面里面有个参数在android里面默认的是false,但是ios好像对这个参数的处理比较好点,这样ios表现的清晰度就比android更加清晰,找不到原文了,不知道这个是不是原文,还是附上一个连接地址:http://www.geekfan.net/11651/

第2中方法是我们项目中现在使用到的方法,会用到NDK编译,不过里面已经提供了相关的so库,如果不想编译,直接拷出来用就好了,本来想直接改为公司包名的,但是有些头文件就是没找到。。。没改成,自己C语言的基础还是差了点,以后继续学习。

转-android图片降低图片大小保持图片清晰的方法的更多相关文章

  1. pyqt5:图片自适应QLabel大小和图片移除

    参考链接: https://www.e-learn.cn/content/qita/669569 图片自适应QLabel大小 # coding=utf- import sys from PyQt5.Q ...

  2. JS控制图片显示的大小(图片等比例缩放)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 【JS控制图片显示的大小(图片等比例缩放)】

    效果: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  4. Android中的Glide加载图片

    注意:在Android Studio的项目的build.gradle中添加: compile 'com.github.bumptech.glide:glide:3.6.1' 然后同步一下 目录: 使用 ...

  5. Android之本地相冊图片选取和拍照以及图片剪辑

    转载请注明出处:http://blog.csdn.net/loveyaozu/article/details/51160482 相信有非常多Android开发者在日常开发中,因为项目需求,须要我们的A ...

  6. Android高效内存2:让图片占用尽可能少的内存

    Android高效内存:让图片占用尽可能少的内存 一.让你的图片最小化 1.1 大图小图内存使用情况对比 大图:440 * 336    小图:220 * 168 资源目录:xhdpi 小图的高宽都是 ...

  7. Android压缩图片到100K以下并保持不失真的高效方法

    前言:目前一般手机的相机都能达到800万像素,像我的Galaxy Nexus才500万像素,拍摄的照片也有1.5M左右.这么大的照片上传到服务器,不仅浪费流量,同时还浪费时间. 在开发Android企 ...

  8. 62.Android之各分辨率定义的图片规格

    转载:http://www.nljb.net/default/Android%E4%B9%8B%E5%90%84%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%9A%E4%B9%8 ...

  9. Android webview实现上传图片的效果(图片压缩)

    mainactivity代码 package com.bwie.webviewupload; import java.io.ByteArrayInputStream; import java.io.B ...

随机推荐

  1. Java——jdk1.5新特性

     /* * 可变参数:--一个方法的参数个数不固定. * 特点: *  只能出现在参数列表的最后. *  调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参 ...

  2. html-javascript前端页面刷新重载的方法汇总

    记得我在兴安得力实习要转正的时候,我领导象征性的给我出了一套测试题目,里面就有js闭包和页面刷新等题目.今天把很久之前的测试题目之一,js页面刷新的方法以及页面自动刷新跳转和返回上一页和下一页等方法总 ...

  3. 浅谈开源项目Android-Universal-Image-Loader(Part 3.1)

    本文转载于:http://www.cnblogs.com/osmondy/p/3266023.html 浅谈开源项目Android-Universal-Image-Loader(Part 3.1) 最 ...

  4. libGraphicsMagickWand.so: cannot open shared object file: No such file or directory stack traceback:

    参考博文:http://www.linuxidc.com/Linux/2016-07/133213.htm ==>> Check Passed, the num of bbox and f ...

  5. MySQL-负载很高排查思路

    工欲善其事必先利其器,我说一下思路 思路:1.确定高负载的类型 htop,dstat命令看负载高是CPU还是IO2.监控具体的sql语句,是insert update 还是 delete导致高负载3. ...

  6. OC IOS屏幕分辨率

    CGRect screenRect=[UIScreenmainScreen].bounds; CGSize screenSize=screenRect.size; //屏幕分辨率 screenSize ...

  7. java-源码下载

    jdk7 下载: http://download.java.net/openjdk/jdk7/ jdk8 下载: http://download.java.net/openjdk/jdk8/

  8. linux服务之rsync

    http://www.cnblogs.com/itech/archive/2010/06/13/1757952.html rsync与mfs好像有点类似,都是传输块的chunk,chunk的 1)软件 ...

  9. ORA-12519, TNS:no appropriate service handler found

    解决问题: 有时候连不上数据库是因为连接数到了极限了. select count(*) from v$process --当前的连接数 130 select value from v$paramete ...

  10. 多线程编程之Windows环境下创建新线程

    转自: http://www.cnblogs.com/lgxqf/archive/2009/02/10/1387480.html 在 Win32 API 中,创建线程的基本函数是 CreateThre ...