- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们使用下面的函数从 URL 下载图像。有时,BitmapFactory.decodeStream
我们会得到 null。由于这个问题,收到的通知没有图像。任何人都可以帮助我们解决该问题..
private Bitmap getImageBitmap(String url)
{
Bitmap bmsd = null;
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bmsd = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
return bmsd;
}
最佳答案
尝试这样,如果位图大小太大,我们需要调整位图大小。
private Bitmap getBitmap(String url)
{
File f=fileCache.getFile(url);
//from SD cache
Bitmap b = decodeFile(f);
if(b!=null)
return b;
//from web
try {
Bitmap bitmap=null;
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
InputStream is=conn.getInputStream();
OutputStream os = new FileOutputStream(f);
CopyStream(is, os);
os.close();
bitmap = decodeFile(f);
return bitmap;
} catch (Exception ex){
ex.printStackTrace();
return null;
}
}
//decodes image and scales it to reduce memory consumption
private Bitmap decodeFile(File f){
try {
//decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f),null,o);
//Find the correct scale value. It should be the power of 2.
int width_tmp=o.outWidth, height_tmp=o.outHeight;
int scale=1;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale*=2;
}
//decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
} catch (FileNotFoundException e) {}
return null;
}
public static void CopyStream(InputStream is, OutputStream os)
{
final int buffer_size=1024;
try
{
byte[] bytes=new byte[buffer_size];
for(;;)
{
int count=is.read(bytes, 0, buffer_size);
if(count==-1)
break;
os.write(bytes, 0, count);
}
}
catch(Exception ex){}
}
关于java - 下载图像时 BitmapFactory.decodeStream 返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41976438/
这是我的代码...我在 imageBitmap = BitmapFactory.decodeStream(is2,null, options); 处收到异常 NULL; 第一次可以解码,但为什么现在,
我应该从互联网获取图像并将其显示在我的 Activity 中。为此,我使用 asynctask 类。我忘记在我的 list 文件中提及互联网权限,并且应用程序成功运行,没有给出任何异常,并且能够获取模
我在这里从 Cursor 获取值: if (mProfileCursor.moveToFirst()) { byte[] blob = mProfileCursor.getBl
我在尝试解码大小为 2448x2448 像素的照片时遇到了一个奇怪的行为。在代码中,我正在计算应该应用 6 的 inSampleSize(基于生成的位图所需的大小),并且当我使用这些选项调用 Bitm
假设我们有一个工作线程,它使用一些连接流调用 BitmapFactory.decodeStream,如下所示: Bitmap bitmap = BitmapFactory.decodeStream(n
我正在尝试将输入流解码为位图,代码非常简单: Bitmap myBitmap = BitmapFactory.decodeStream(myStream); 但输出位图的质量太低(有时,有时质量很好)
我正在尝试领养 bitmap resizing教程 - 唯一的区别是我使用 decodeStream 而不是 decodeResource。这很奇怪,但是没有任何操作的 decodeStream 给了
我知道这个问题出现了很多次,但我找不到任何对我有帮助的解决方案。我正在从网页下载头像并将其保存在内部存储中。 在我的 Activity 中: // check if user
我们需要对从 InputStream 接收到的图像进行下采样。它是从某个 URL 接收到的图像,它可以非常小或非常大。为了将此图像放入内存,我们必须对其进行下采样。首先,我们借助 inJustDeco
我正在尝试从内部存储中保存和检索位图,但每次我尝试加载位图时,BitMapFactory 都会抛出异常: BitmapFactory: Unable to decode stream: java.io
我正在尝试用下一个代码获取一张刚刚用相机拍摄的照片,但我总是遇到同样的错误: skia(446): --- SkImageDecoder::Factory returned null (它不会抛出异
我们使用下面的函数从 URL 下载图像。有时,BitmapFactory.decodeStream 我们会得到 null。由于这个问题,收到的通知没有图像。任何人都可以帮助我们解决该问题.. 这是我的
我在我的应用程序中使用我自己的 Android ViewFlow 示例实现。我正在从网络服务下载加密图像,而不是将它们保存在 SD 卡上。我正在使用 viewflow 即时解密图像并显示它们。但问题是
显然这是一项昂贵/耗时的操作。有什么办法可以改善这个? Bitmap bm = BitmapFactory.decodeStream((InputStream) new URL(
我试图从图像的路径中获取位图图像。但是 BitmapFactory.decodeStream 返回 null 值。 代码: URL url = new URL(path); HttpURLConnec
我看了很多关于解码位图的内存分配问题的相关帖子,但使用官网提供的代码仍然无法找到以下问题的解决方案。 这是我的代码: public static Bitmap decodeSampledBitmapF
在从 BitmapFactory.decodeStream(imagestream) 返回之前,我需要调整/缩小我从图库中选择的图像。当我选择大图像时,它会抛出 OutOfMemory Excepti
我在 AsyncTask 中使用 BitmapFactory.decodeStream() 从 Internet 下载位图。在我的应用程序中,我有一个图像 ListView ,我只想下载用户可以看到的
我有以下异步任务,它应该只从给定的 URL 加载图像。图片确实存在,我可以访问它们 private class FetchVehicleImage extends AsyncTask {
我的代码旨在在按下 UI 按钮时使用来自服务器的图像更新 ImageView。 下面显示的客户端代码是一个 Runnable,在按下按钮时运行。服务器是一个桌面 Java 应用程序,在后台运行 ffm
我是一名优秀的程序员,十分优秀!