以上图片大家可以看到,虽然是个jpg格式的文件,但是本质上是个动图。

但是发现在咱的图片模块下,本地存储的图片只有一帧,问题出在哪里呢?

http获取到的byte[]数据是没问题的

断点跟踪了下,发现问题出现在最后一句压缩图片尺寸的时候。

public static Bitmap getScaledBitMap(byte[] data, int width, int height) {BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeByteArray(data, 0, data.length, options);float srcWidth = options.outWidth;float srcHeight = options.outHeight;int inSampleSize = 1;if (srcHeight > height || srcWidth > width) {if (srcWidth > srcHeight)inSampleSize = Math.round(srcHeight / height);elseinSampleSize = Math.round(srcWidth / width);}options = new BitmapFactory.Options();options.inSampleSize = inSampleSize;return BitmapFactory.decodeByteArray(data, 0, data.length, options);}

最后的解决之道是,不经过Bitmap,直接把http获取到的byte[]数据写入到本地;在取出的时候,才进行图片尺寸压缩。

 /*** 写入bytes** @param url* @param bytes* @return*/public boolean save(String url, byte[] bytes) {if (bytes == null || bytes.length == 0)return false;url = trans2Local(url);File file = new File(url);if (file.exists())return true;ZIO.createNewFile(file);FileOutputStream fos = null;try {fos = new FileOutputStream(file);fos.write(bytes);return true;} catch (Exception e) {e.printStackTrace();Log.e("存储出错", e.getMessage());} finally {try {fos.close();} catch (Exception e) {e.printStackTrace();}}return false;}

这种做法额外的好处是,不再理会奇怪的图片格式质量问题。

比如我们用Bitmap保存图片的时候还要取判断图片类型,还要去指定压缩精度(如果100的话图片尺寸比原图还要大很多,真奇怪)

    Bitmap.CompressFormat format = url.toLowerCase().indexOf("png") > 0 ? Bitmap.CompressFormat.PNG : Bitmap.CompressFormat.JPEG;bitmap.compress(format, 75, fos);

转载于:https://www.cnblogs.com/kimmy/p/4780024.html

【android】 如何把gif图片下载到本地相关推荐

  1. python 下载图片到内存卡_python-23:将图片下载到本地

    python-23 :将图片下载到本地 得到图片的网址之后我么你怎么将图片下载到本地 呢? 在 python 中我们使用 urllib 库里面的 urllib.urlretrieve() 函 数 又是 ...

  2. 微信小程序把图片下载到本地相册(附源码)

    微信小程序保存网络图片到本地实现流程: 1.把图片下载到本地相册 2.检查用户的授权状态(三种状态:未授权,已授权,未同意授权),判断是否授权保存图片的能力,如果是用户点击了不同意授权给小程序保存图片 ...

  3. Vue中实现图片下载到本地功能和导出(下载)excel文件功能:

    一.实现图片下载到本地功能 需求: 将勾选的列表项的id传给后台,让后台处理并下载对应的图片 1. 后台接口: 下载图片zip: GET /download 请求数据类型 application/x- ...

  4. 图片在canvas中显示,给canvas添加文字,文字描边,将canvas保存成图片下载到本地

    Canvas简介 HTML5新增标签 Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitma ...

  5. java爬虫下载图片到磁盘_java入门爬虫(爬取网页的图片下载到本地磁盘)

    java爬虫入门技术 我们需要用到http协议 从而建立java程序和网页的连接 URL url = new URL("https://www.ivsky.com/tupian/ziranf ...

  6. python下载图片被覆盖了_scrapy 将抓取内容中的图片下载到本地并替换内容中的原始图片...

    使用scrapy采集的文章里面有很多图片,都是远程图片,我想把这些远程图片都下载下来,然后把图片地址全都改成相对路径. 我想把里面的图片都下载到本地,然后再把路径保存再item 里面. def par ...

  7. Selenium图片下载到本地的实例

    目录 一.实例 指定网站  下载到本地的图片 今天与大家分享一个小案例 简单来说就是通过Selenium爬取京东/html页面的商品信息.图片... 一.实例 指定网站  下载到本地的图片 效果展示 ...

  8. vue中实现图片下载到本地

    <imgsrc="../img/download.png"alt=""class="download_img"@click=" ...

  9. android图片下载到本地

    1.联网权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />&l ...

最新文章

  1. Day19-File操作-创建 删除,文件过滤
  2. 使用netty编写IM通信界面
  3. #define与typedef的区别!
  4. 浏览器打不开计算机二级网页,电脑的的所有浏览器都打不开二级网页 该怎么处理 网上好多办法都尝试了 没用 谁能帮帮我 谢谢...
  5. JavaScript实现depth First Search深度优先搜索算法(附完整源码)
  6. Boost.MultiIndex 使用散列索引的示例
  7. ABAP的自学之路 ,初步认识ABAP 一
  8. 大学物理实验长度的测量实验报告_大学物理实验教案长度和质量的测量两篇
  9. Vue入门 ---- 组件通信
  10. java中JOptionPane类_Java学习之JOptionPane类
  11. Data-Driven Geometry Processing 3D Deep Learning
  12. Vue.js学习系列(九)---使用路由搭建单页应用(二)
  13. ALEXA解释(日IP500,可以使你进10万内)
  14. 一文读懂!最新Transformer预训练模型综述!
  15. vsphere 6.5 HA 提示:此主机当前没有管理网络冗余,该主机的vSphere HA检测信号数据存储数目为0 告警消除
  16. 七牛上传图片初探 开始上传 暂停上传 继续上传
  17. 入手python难不难_Python难不难?容易学吗?
  18. 计算机组成中位、字节、字、字长、存储单元、存储字、存储字的辨析
  19. 解决:pandas.errors.ParserError: Error tokenizing data. C error: Expected 2 fields in line 18, saw 4
  20. JS事件处理这一篇就够了!!

热门文章

  1. NPN三极管放大原理
  2. iTerm2 + Oh My Zsh,打造专属你的终端神器
  3. zsh: command not found: brew
  4. Flutter 嵌套深、刷新乱?少年,你怕是连Flutter的门槛都没摸到!
  5. Could not find metadata org.apache.maven.plugins:maven-archetype-plugin/maven-metadata.xml in local
  6. 简单JS小案例:五星好评
  7. 【STM32F429开发板用户手册】第18章 STM32F429的GPIO应用之跑马灯
  8. 压测、压力测试分析、UV、PV、通用性能提高、并发
  9. 模式识别实验matlab报告,西安交大模式识别实验报告.doc
  10. DSP TMS320F280049C——互补波形(一)