通常在开发Android显示网络图片时,通常会遇到因手机屏幕大小的不同,显示图片变形的问题。所以我们在显示图片时通过获取图片的大小,再计算出控件应该显示的大小,这样图片显示不会出现拉伸的问题。以下就是怎样获取网络图片大小的方法,希望能帮助大家!
// 定义一个网页图片的路径
String url = ”http://www.kksdapp.com/data/upload/552730a23a335.jpg“;
// 根据图片地址获取图片输出流方法
// 注:使用该方法时要在异步类中调用该方法
public static InputStream getInputStream(Context context, String path){
InputStream inputStream = null;
HttpURLConnection httpURLConnection = null;
String bitmapUrl = null;
bitmapUrl = path;
try {
URL url = new URL(bitmapUrl);
if(!StringUtil.isNull(url.toString())){
httpURLConnection = (HttpURLConnection) url.openConnection();
// 设置连接网络的超时时间
httpURLConnection.setConnectTimeout(5000);
// 打开输入流
httpURLConnection.setDoInput(true);
// 设置本次Http请求使用的方法
httpURLConnection.setRequestMethod("GET");
if (200 == httpURLConnection.getResponseCode()){
// 从服务器获得一个输入流
inputStream = httpURLConnection.getInputStream();
}else{
Log.v("inputStream", url+"_链接失败");
}
}
} catch (Exception e) {
Log.w("url", e.toString());
e.printStackTrace();
}
return inputStream;
}
// 页面启动异步类调用上面的方法,并将获得的图片输出流转化成bitmap格式,再获取图片的大小
public static Integer[] getIntentPicSize(final Context context, final String url){
final Integer[] size = new Integer[2];
new AsyncTask<Void, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(Void... params) {
System.out.println("url : " + url);
InputStream is = DownloadBitmap.getInputStream(context, url);
if (is != null) {
return BitmapFactory.decodeStream(is);
} else {
eturn null;
}
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if (bitmap == null) {
bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.member_home_bg);
}
size[0] = bitmap.getWidth();
size[1] = bitmap.getHeight();
System.out.println("bitmap.getWidth() : " + bitmap.getWidth());
System.out.println("bitmap.getHeight() : " + bitmap.getHeight());
super.onPostExecute(bitmap);
}
}.execute();
return size;
}