有人可以检查下面的代码,看看是否有更好的事情要做。我真正担心的是表现,我会有这个吗?如果没有,有什么方法可以做得更好,以提高代码的可读性吗?
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();
}
欢迎任何考虑因素。
谢谢!
答案 0 :(得分:0)
从URL读取时,您将遇到所有正常的性能问题 - 连接/带宽/可用性差;同样的解决方案也适用 - 创建和使用本地缓存,在后台线程上加载/重IO(以避免阻塞主UI线程)。您还希望将代码包装在一个独立的参数化函数中......
在这个例子中,您实际上并没有对结果InputStream
做任何事情 - 或许考虑它们是否总体上需要得到你想要的东西 - 就像你每次都将整个图像加载到内存中一样 - 如果您所做的只是将其保存到磁盘,则不是完全必要的。
答案 1 :(得分:0)
如果你想要的只是下载图片,我会使用BufferedInputStream
允许它从下面的网络尽快读取数据。
他们可以类似地使用BufferedOutputStream
将其转储到本地文件的FileOutputStream
。
无需进行任何图像处理。