导航:首页 > 操作系统 > androiddecodefile

androiddecodefile

发布时间:2023-02-14 05:43:21

android bitmapfactory.decodefile返回null怎么解决

这个android 的一个bug 。在android 2.2 以下(包括2.2) 用 BitmapFactory.decodeStream() 这个方法,会出现概率性的解析失败的异常。而在高版本中,eg 2.3 则不会出现这种异常。

各种网络、各种谷歌、各种分析问题的过程就不再多说了,这里直接说一个解决方法,如下:
//定义一个根据图片url获取InputStream的方法
public static byte[] getBytes(InputStream is) throws IOException {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024]; // 用数据装
int len = -1;
while ((len = is.read(buffer)) != -1) {
outstream.write(buffer, 0, len);
}
outstream.close();
// 关闭流一定要记得。
return outstream.toByteArray();
}

//然后使用方法decodeByteArray()方法解析编码,生成Bitmap对象。
byte[] data = getBytesFromInputStream(new URL(imgUrl).openStream());
Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);

② android怎样把文件的指定路

这个还要看是什么文件,举个例子获取图片文件。 Bitmap bitmap = BitmapFactory.decodeFile(android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+ "/data/abc/def/ghi.jkl")

③ Android 图片加载(一)高效加载Bitmap 基础篇

由于Bitmap的特殊性以及Android对单个应用所规定的最大内存限制,我们在同时加载大量Bitmap时很容易发生内存溢出,即我们通常所说的OutOfMemoryError(OOM),因此高效加载Bitmap就成为了每个Android开发者的必备技能。

在学习如何高效地加载Bitmap之前,首先介绍一下如何加载一个Bitmap。我们都知道,Bitmap在Android中通常指的是一张图片,那么如何将JPG、PNG等格式的图片转换成Bitmap对象呢?BitmapFactory类给我们提供了一些方法:

接下来开始介绍如何高效地加载Bitmap,其实核心思想很简单: 就是采用BitmapFactory.Options参数来调整图片尺寸来适配控件的大小。

假如我们显示图片的控件ImageView宽高为100×100像素,而图片的尺寸为1024×1024像素,这个时候如果将整个图片加载进来并显示到控件上,自然是很占用内存资源的。这个时候可以通过BitmapFactory.Options按一定的采样率加载缩小后的图片,再将缩小后的图片显示到ImageView中,这样就能减小内存占用从而在一定程度上避免OOM的发生。

通过BitmapFactory.Options来缩放图片,主要是使用它的inSampleSize参数,也就是前面提到的采样率。当采样率inSampleSize为1时,采样后的图片大小为原图大小;当采样率inSampleSize>1,比如为2时,采样后的图片宽高都为原图的1/2,即像素降为原图的1/4,占用的内存大小也就是原图的1/4;比较特殊的是,当采样率inSampleSize<1时,系统会自动将该值当做1来处理。 因此可以得出一个结论:采样率inSampleSize必须是大于1的整数图片才会有缩小的效果,并且采样率同时作用于宽高,也就是说采样后的图片会缩小到原图的1/(inSampleSize^2)。比如inSampleSize=4,那么缩放比例为1/16。

我们现在知道了,通过采样率可以提高图片的加载效率,那么如何才能计算出最合适的采样率?我们可以按照如下流程:

接下来以decodeFile方法为例实现图片的缩放,其他三个方法处理方式类似。

下一篇: Android 图片加载(二)图片加载框架Glide 入门篇

《Android开发艺术探索》

④ Android 在知道文件路径以及文件名称读取SD卡上的图片该怎么做

不知道你是想读取出来干嘛,
但是读取sd卡的图片文件第一步要获取图片的绝对路径,
Environment.getExternalStorageDirectory().toString()就是获取sd卡的绝对路径,由于android各个版本不同,返回的路径也可能不相同,
String imgFilePath = Environment.getExternalStorageDirectory().toString()
+ “/DCIM/device.png
得到图片的绝对路径以后,可以通过流读取这个文件,如果你只是想显示到界面的话,那可以使用BitmapFactory来构建一个Bitmap对象,这个对象是可以直接应用于imageView的

创建方法BitmapFactory.decodeFile("图片路径")

⑤ android 已经知道路径怎么将路径中的图片变成Bitmap

/**
* 获取本地图片并指定高度和宽度
*/
public static Bitmap getNativeImage(String imagePath)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
// 获取这个图片的宽和高
Bitmap myBitmap = BitmapFactory.decodeFile(imagePath, options); //此时返回myBitmap为空
//计算缩放比
int be = (int)(options.outHeight / (float)200);
int ys = options.outHeight % 200;//求余数
float fe = ys / (float)200;
if (fe >= 0.5)
be = be + 1;
if (be <= 0)
be = 1;
options.inSampleSize = be;
//重新读入图片,注意这次要把options.inJustDecodeBounds 设为 false
options.inJustDecodeBounds = false;
myBitmap = BitmapFactory.decodeFile(imagePath, options);
return myBitmap;
}
/**
* 以最省内存的方式读取本地资源的图片 或者SDCard中的图片
* @param imagePath
* 图片在SDCard中的路径
* @return
*/
public static Bitmap getSDCardImg(String imagePath)
{
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
//获取资源图片
return BitmapFactory.decodeFile(imagePath, opt);
}

⑥ android怎么实现导入图片

1. 图片放在sdcard中, Bitmap imageBitmap = BitmapFactory.decodeFile(path) (path 是图片的路径,跟目录是/sdcard)2. 图片在项目的res文件夹下面 //得到application对象 ApplicationInfo appInfo = getApplicationInfo(); //得到该图片的id(name 是该图片的名字,"drawable" 是该图片存放的目录,appInfo.packageName是应用程序的包) int resID = getResources().getIdentifier(name, "drawable", appInfo.packageName); //代码如下 public Bitmap getRes(String name) {ApplicationInfo appInfo = getApplicationInfo();int resID = getResources().getIdentifier(name, "drawable", appInfo.packageName);return BitmapFactory.decodeResource(getResources(), resID);}3. 图片放在src目录下 String path = "com/xiangmu/test.png"; //图片存放的路径 InputStream is = getClassLoader().getResourceAsStream(path); //得到图片流4.android中有个Assets目录,这里可以存放只读文件资源获取的方式为 InputStream is = getResources().getAssets().open(name);

阅读全文

与androiddecodefile相关的资料

热点内容
python数据分析实战pdf 浏览:983
u盘插入文件夹 浏览:916
华为amd云服务器 浏览:495
汉化编程卡是什么意思 浏览:126
python学习pdf 浏览:313
祝绪丹程序员那么可爱拍吻戏 浏览:198
asp源码会员消费系统 浏览:113
java反射设置 浏览:152
python一行文 浏览:439
排序算法优缺点 浏览:563
恶搞加密文件pdf 浏览:674
gif怎么压缩图片大小 浏览:217
命令选择当前不可用 浏览:158
欧几里得算法如何求逆元 浏览:506
男中学生上课解压神器 浏览:373
加密狗拔掉之后怎么办 浏览:27
云储存平台源码 浏览:847
解压文件苹果手机rar 浏览:149
centos开机命令行模式 浏览:697
遍历所有listpython 浏览:660