我已使用所有标准网络相关代码来获取有关的图像45KB to 75KB
但所有这些方法都失败了,对于大约的文件来说工作正常3-5KB
图像的大小。我怎样才能实现下载图像45 - 75KB
为了在 Android 中的 ImageView 上显示它们以进行网络操作,我使用的东西是
final URL url = new URL(urlString);
final URLConnection conn = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(true);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
我使用过的第二个选项是::
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet getRequest = new HttpGet(urlString);
HttpResponse response = httpClient.execute(getRequest);
为什么此代码适用于较小尺寸的图像而不适用于较大尺寸的图像。 ?
您下载的图像的大小非常无关紧要。然而,它使用 BitmapFactory.decodeStream 解码的大小是处理图像所需的内存。
因此,重新采样可能有用。
Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, options);
Boolean scaleByHeight = Math.abs(options.outHeight - TARGET_HEIGHT) >= Math.abs(options.outWidth - TARGET_WIDTH);
if(options.outHeight * options.outWidth >= 200*200){
// Load, scaling to smallest power of 2 if dimensions >= desired dimensions
double sampleSize = scaleByHeight
? options.outHeight / TARGET_HEIGHT
: options.outWidth / TARGET_WIDTH;
options.inSampleSize =
(int)Math.pow(2d, Math.floor(
Math.log(sampleSize)/Math.log(2d)));
}
// Do the actual decoding
options.inJustDecodeBounds = false;
is.close();
is = getHTTPConnectionInputStream(sUrl);
Bitmap img = BitmapFactory.decodeStream(is, null, options);
is.close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)