效果展示
输入图片地址,点击button
布局EditText,button,ImageView
给button加监听器实现代码:
String path = imagePathText.getText().toString(); NetTool NTU=new NetTool(); String imagePath = NTU.getImagePath(getBaseContext(), path); imageView.setImageBitmap(BitmapFactory.decodeFile(imagePath));解 释:
- path 图片路径
- NetTool 从网络获取图片的工具类
- NetTool 主要的3个方法
-
public class NetTool { static String TAG="step"; public static InputStream getRequest(String path) throws Exception { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); // 5秒 if (conn.getResponseCode() == 200) { return conn.getInputStream(); } return null; } public static byte[] readInputStream(InputStream inStream) throws Exception { ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); byte[] buffer = new byte[4096]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outSteam.write(buffer, 0, len); } outSteam.close(); inStream.close(); return outSteam.toByteArray(); } // 获取网络图片,如果缓存里面有就从缓存里面获取 public static String getImagePath(Context context, String url) { if (url == null) return ""; String imagePath = ""; String fileName = ""; // 获取url中图片的文件名与后缀 if (url != null && url.length() != 0) { fileName = url.substring(url.lastIndexOf("/") + 1); } // 图片在手机本地的存放路径,注意:fileName为空的情况 imagePath = context.getCacheDir() + "/" + fileName; Log.i(TAG, "imagePath = " + imagePath); File file = new File(context.getCacheDir(), fileName);// 保存文件, if (!file.exists()) { Log.i(TAG, "file 不存在 "); try { byte[] data = readInputStream(getRequest(url)); Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); bitmap.compress(CompressFormat.JPEG, 100, new FileOutputStream( file)); imagePath = file.getAbsolutePath(); Log.i(TAG, "imagePath : file.getAbsolutePath() = " + imagePath); } catch (Exception e) { Log.e(TAG, e.toString()); } } return imagePath; } }