当前位置: 首页 > 面试题库 >

如何从网址加载图片

丰超
2023-03-14
问题内容

我正在为Android编写一个小相框应用程序,它使用opengl作为部分UI。这部分需要从flickr获取图像并将其加载到纹理中。我下面的代码大多数时候都可以使用,但是在从连接获取输入流和对流进行位图解码的位之间,它具有Thread.sleep()缺点:

            URL url = new URL("http://farm5.static.flickr.com/4132/5168797476_7a85deb2be_b.jpg");
            URLConnection con = url.openConnection();
            InputStream is = con.getInputStream();
            Thread.sleep(250); //What am I actually waiting for?
            sourceBitmap = BitmapFactory.decodeStream(is);

我如何使用sleep()方法来支持具有逻辑意义的内容?

我正在不在模拟器中的三星银河标签上进行测试


问题答案:

这似乎不太理想,但是如果您将字节流逐字节读取到缓冲区中,然后将字节数组传递给BitmapFactory,它将正常工作。

            URL url = new URL("http://farm5.static.flickr.com/4132/5168797476_7a85deb2be_b.jpg");
            URLConnection con = url.openConnection();
            con.connect();
            int fileLength = con.getContentLength();
            InputStream is = con.getInputStream();
            byte[] bytes = new byte[fileLength];
            for(int i=0;i<fileLength;i++) {
                bytes[i] = (byte)is.read();
            }
            sourceBitmap = BitmapFactory.decodeByteArray(bytes, 0, fileLength);

我尝试使用is.read(bytes,0,fileLength)一次将字节读取到缓冲区中,但是除非我在调用read之前稍等片刻,否则它无法可靠地完全填充缓冲区。android的InputStream的read方法的实现是否有缺陷,导致BitmapFactory的encodeStream方法由于数据不完整而失败?



 类似资料:
  • 问题内容: 我正在尝试在CSS中使用背景图片,但是即使我给出了图片的完整路径,也无法正常工作。Firebug显示“无法加载给定的URL”。我确定该文件夹中没有权限问题。我的CSS课是 是什么原因引起的? 问题答案: 您正在使用本地路径。那真的是你想要的吗?如果是,则需要使用前缀: 显然,这仅在您的本地计算机上有效。 此外,在许多现代浏览器中,仅当页面本身也位于本地文件路径上时,此方法才有效。从远程

  • 问题内容: 最近,AWS Lambda添加了对Java的支持。 尽管这是个好消息,但它对代码的大小(压缩的50MB)造成了相当严格的限制。尽管这对于其他语言可能很好,但是Java uberjars可以轻松击败它。 因此,我一直在考虑使用一个小型加载程序在运行时从其他地方插入一个较大的jar的想法。(暂时不要考虑这是个好主意)。 从我的初步研究看来,定制类加载器是必经之路。对于AWS Lambda来

  • 我有一个页面,可以显示类别中的帖子。 我希望使用此代码 问题是,我不能显示缩略图。 我正在努力寻找如何发布缩略图网址并放入其中

  • 问题内容: 我想搜索一个html文件,然后获取该页面上图像的URL。然后,该网址应另存为字符串-多数民众赞成。问题是我真的不知道如何开始。 我的应用程序当然知道图像所在页面的网址。举个例子,让这个URL: 在此页面上,我需要大图像的URL作为字符串。当我查看源代码时,我可以找到该URL,但是我不知道该如何编码-这是我需要的URL: (仅引号内的文本)。 问题答案: 使用JSoup。这是一个HTML

  • 问题内容: 如果我有一个大的位图文件,该文件通常会生成“内存不足”异常,那么如何将其加载为图块?例如,我有一个10,000x10,000的图片,我想将其拆分为一个10x10的网格,其中包含1,000x1,000像素的图块。 我已经看过该功能,但是它需要我的大图像作为源输入。 如何在不完全加载输入图像的情况下从输入图像获取图块? 问题答案: Romain Guy的回答“是否有可能将位图切成小块而无需

  • 问题内容: 我需要以简单的Java独立应用程序从Web加载图像。有任何想法吗? 问题答案: 这足以启动您吗?不知道您要从那里做什么。