png和jpg作为两种最常用的图片格式,首先我们要知道他们的区别:

1.从一般图片的外观上来说,他们是无法直接判断的

2.从文件大小上来说,同样一张图png肯定比jpg的大

3.通过查资料咱们可以发现,png即可移植网络图形格式,也是一种位图文件存储格式,可以进行无损压缩。而jpg是我们最常见的图片格式了,图片占用存储较少,但是也牺牲了图片质量。

总结为一句话是两者最大的区别是有损和无损。

而出现加载透明png图片变黑的问题,一般情况下这样的:

服务端的图片是透明png的无损图片,我们下载到本地的时候强制把它处理为了jpg的形式,造成图片质量有损。

jpg图片是没有背景透明这个概念的。

图片下载保存到本地SD卡的工具方法,可以使用如下代码:

/**

* 将文件写到本地缓存

* @param fileName

* @param in

* @param length 总的文件长度

* @param callBack 下载回调接口

*/

private static void writeToLocal(String fileName, InputStream in,int length,DownloadCallback callback) {

if(in == null) {

return;

}

FileOutputStream out = null;

byte[] buffer = new byte[1024];

int len = -1;

long count = 0;

try {

out = new FileOutputStream(fileName);// 为图片文件实例化输出流

while ((len = in.read(buffer)) != -1) {

out.write(buffer, 0, len);

count += len;

if(callback != null) {

callback.onDownload(length, count, false, false);

}

}

if(callback != null) {

callback.onDownload(length, count, true, false);

}

out.flush();

out.close();

in.close();

} catch (IOException e1) {

e1.printStackTrace();

try {

if (out != null) {

out.close();

out = null;

}

in.close();

in = null;

} catch (IOException e) {

e.printStackTrace();

}

// 网络出现异常,删除下载文件

new File(fileName).delete();

if(callback != null) {

callback.onDownload(length, count, false, true);

}

}

}

Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】

Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)[系列1] Android在加载或者处理超大巨型图片 ...

android加载更多的图片

这是昨天改进后的,我测试了下,可以加载图片到5万张,估计5万以上也是没问题的,我只试到5万,其实也没必要这么高,现实中1000左右就差不多了,不过我的应用到100就差不多了, package com. ...

vc++加载透明png图片方法-GDI+和CImage两种

转载自:http://blog.csdn.net/zhongbin104/article/details/8730935 先看看GDI+的方法方法1:   1.GDI+画透明图层(alpha)的png ...

android 加载图片框架--Glide使用详解

一.简介 Glide,一个被google所推荐的图片加载库,作者是bumptech.这个库被广泛运用在google的开源项目中,包括2014年的google I/O大会上发布的官方app.(PS:众所 ...

Android学习笔记_51_转android 加载大图片防止内存溢出

首先来还原一下堆内存溢出的错误.首先在SD卡上放一张照片,分辨率为(3776 X 2520),大小为3.88MB,是我自己用相机拍的一张照片.应用的布局很简单,一个Button一个ImageView, ...

Android加载图片OOM错误解决方式

前几天做项目的时候,甲方要求是PAD (SAMSUNG P600 10.1寸 2560*1600)的PAD上显示高分辨率的大图片. SQLITE採用BOLD方式存储图片,这个存取过程就不说了哈,网上一 ...

Android开发技巧——TextView加载HTML的图片及代码显示问题

前几天在做一个Gradle用户指南的应用程序,使用的是TextView来加载HTML内容(至于为什么不用WebView,我也没有认真使用并比较过,也许以后会换吧),其中遇见了一些纠结的问题,所幸主要的 ...

Android加载图片的策略

实现图片缓存也不难,需要有相应的cache策略.这里我采用 内存-文件-网络 三层cache机制,其中内存缓存包括强引用缓存和软引用缓存(SoftReference),其实网络不算cache,这里姑且 ...

android加载gif图片

Android加载GIF图片的两种方式 方式一:使用第三开源框架直接在布局文件中加载gif 1.在工程的build.gradle中添加如下 buildscript { repositories { m ...

随机推荐

RecyclerView 制作瀑布流图片

这是瀑布流的效果图 RecyclerView(ListView的升级版) 加载图片用的是第三方图片加载框架 ------------------------------------- 在Xml中 &l ...

running programmer——spring-01(初谈spring)

今天主要是通过一个简单的登录程序学习一些spring做基础的配置和功能. I.spring的核心配置applicationContext.xml 关于bean的配置官方给出的最基础的配置文件如下: & ...

Sublime文本排序&查找重复行&删除重复行

排序 按F9或者选择菜单:Edit > Sort Lines,对每行文本进行排序 查找重复行 排序好后,按Ctrl+F,调出查找面板 查找字符串: ^(.+)$[\r\n](^\1$[\r\n] ...

Sublime Text 用法小记

复制当前行: Ctrl + Shift + D 上下移动行: Ctrl + Shift + ↑/↓ 选中行部分: Crtl + Shift + ←/→ 格式化json: Ctrl + Alt + J

memcached安装配置

简述: memcached,开源的分布式缓存数据系统.高性能的NOSQL . Linux 一.环境配置与安装 01.编译准备环境 yum install -y gcc make cmake autoc ...

JS-Math对象

M ...

(03)odoo模型/记录集/公用操作

-----------------更新时间11:17 2016-09-18 星期日11:00 2016-03-13 星期日09:10 2016-03-03 星期四11:46 2016-02-25 星期 ...

jQuery - 实时统计输入框输入个数(中文输入法适用)

经常在实时统计文本框输入多少字的时候,有时会出现不及时统计,特别是在中文输入法下. 为了实时准确统计,可以修改代码如下:     $(function() {        $("#txtT ...

vijos1891 学姐的逛街计划(线性规划)

P1891学姐的逛街计划 描述 doc 最近太忙了, 每天都有课. 这不怕, doc 可以请假不去上课.偏偏学校又有规定, 任意连续 n 天中, 不得请假超过 k 天. doc 很忧伤, 因为他还要陪 ...

如何获取Linux-gate.so.1动态库

前面"Linux应用程序Helloworld入门"已经提到在Linux下每个可执行文件都依赖于几个最为基本的动态库,其中一个就是linux-gate.so.1. 从上面ldd给出的 ...

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐