从 URL 读取图像 - 性能问题



有人可以检查下面的代码,看看是否有更好的做法。我真正担心的是性能,我会对此有任何看法吗?如果没有,有什么事情可以更好地提高代码的可读性吗?

try {
    URL url = new URL("http://www.pudim.com.br/SiteBuilder/UploadUsers/pudim.com.br/pudim.jpg");
    URLConnection uc = url.openConnection();
    String type = uc.getContentType();
    BufferedImage image = ImageIO.read(url);
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", os);
    byte[] bytes = os.toByteArray();
    InputStream is = new ByteArrayInputStream(bytes);
    // not important :) ...
} catch (AmazonServiceException e) {
    e.printStackTrace();
} catch (AmazonClientException e) {
    e.printStackTrace();
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

欢迎任何考虑。

谢谢!

您将遇到从 URL 读取时会遇到的所有正常性能问题 - 连接/带宽/可用性差; 相同的解决方案也适用 - 创建和使用本地缓存,在后台线程上加载/繁重 IO(以避免阻塞主 UI 线程)。 您还需要将代码包装在一个独立的参数化函数中...

在这个例子中,你实际上并没有对生成的InputStream做任何事情 - 也许考虑它们是否总体上是必要的,以获得你想要的东西 - 就像你每次都把整个图像加载到内存中一样 - 如果你所做的只是将其保存到磁盘,则不是完全必要的。

如果您只想下载图像,我只会使用BufferedInputStream允许它尽可能快地从下面的网络读取数据。

它们 您可以类似地使用BufferedOutputStream将其转储到本地文件的FileOutputStream

无需进行任何图像处理。

最新更新