转-android图片降低图片大小保持图片清晰的方法
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图片降低图片大小保持图片清晰的方法的更多相关文章
- pyqt5:图片自适应QLabel大小和图片移除
参考链接: https://www.e-learn.cn/content/qita/669569 图片自适应QLabel大小 # coding=utf- import sys from PyQt5.Q ...
- JS控制图片显示的大小(图片等比例缩放)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【JS控制图片显示的大小(图片等比例缩放)】
效果: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- Android中的Glide加载图片
注意:在Android Studio的项目的build.gradle中添加: compile 'com.github.bumptech.glide:glide:3.6.1' 然后同步一下 目录: 使用 ...
- Android之本地相冊图片选取和拍照以及图片剪辑
转载请注明出处:http://blog.csdn.net/loveyaozu/article/details/51160482 相信有非常多Android开发者在日常开发中,因为项目需求,须要我们的A ...
- Android高效内存2:让图片占用尽可能少的内存
Android高效内存:让图片占用尽可能少的内存 一.让你的图片最小化 1.1 大图小图内存使用情况对比 大图:440 * 336 小图:220 * 168 资源目录:xhdpi 小图的高宽都是 ...
- Android压缩图片到100K以下并保持不失真的高效方法
前言:目前一般手机的相机都能达到800万像素,像我的Galaxy Nexus才500万像素,拍摄的照片也有1.5M左右.这么大的照片上传到服务器,不仅浪费流量,同时还浪费时间. 在开发Android企 ...
- 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 ...
- Android webview实现上传图片的效果(图片压缩)
mainactivity代码 package com.bwie.webviewupload; import java.io.ByteArrayInputStream; import java.io.B ...
随机推荐
- 关于正则表达式处理textarea里的换行
将textarea里的内容存入数据库时,会自动将回车换行符过滤成空格,也会将多个空格转换成一个空格,即:将\n等换成 “ ”存入数据库 因此为了将内容从数据库中按照原来格式读出写入到html 就必须 ...
- OSGi 的由来和本质特性
OSGi 的由来 随着科技和需求的发展和变化,现在的软件变得越来越庞大.这样,随之而来的最大挑战就是软件在设计上的越来越复杂和维护上的越来越困难.为了解决这个问题,软件架构师将软件切分成比较小的并且易 ...
- HTML,XML中的转义字符
HTML中的转义字符 HTML中<, >,&等有特别含义,(前两个字符用于链接签,&用于转义),不能直接使用.使用这三个字符时,应使用他们的转义序列,如下所示: & ...
- 024. asp.net中第一次使用GridView (设置鼠标经过时更换背景色)
1. 前端HTML代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Inde ...
- fork炸弹
众所周知,bash是一款极其强大的shell,提供了强大的交互与编程功能.这样的一款shell中自然不会缺少“函数”这个元素来帮助程序进行 模块化的高效开发与管理.于是产生了由于其特殊的特性,bash ...
- OpenJudge计算概论-单词排序
/*===================================== 单词排序 总时间限制:1000ms 内存限制: 65536kB 描述 输入一行单词序列,相邻单词之间由1个或多个空格间隔 ...
- Golang_test
package main import ( "fmt" "time" ) func GetName() { //没事玩一下循环 for i := 0; i &l ...
- java 常用集合例子
package test; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import ...
- DIV+CSS命名规范-转载1
命名规则说明: 1).所有的命名最好都小写 2).属性的值一定要用双引号("")括起来,且一定要有值如class="divcss5",id="divc ...
- elasticsearch 集群配置
2015-10-10 09:56 by 轩脉刃, 999 阅读, 1 评论, 收藏, 编辑 elasticsearch 集群 搭建elasticsearch的集群 现在假设我们有3台es机器,想要把他 ...