<?xml version=
"1.0" encoding=
"utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/textView1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="請輸入圖片網址"></TextView>
<EditText android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/editText_url"></EditText>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="獲取" android:id="@+id/button_get"></Button>
<ImageView android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_gravity="center"
android:id="@+id/p_w_picpathView"></ImageView>
</LinearLayout>
package com.yanjun;
import com.yanjun.getImage.GetImage;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
/**
* 經過網絡獲取圖片
* @author YanJun
*<uses-permission android:name="android.permission.INTERNET"></uses-permission>
*/
public
class MainActivity
extends Activity {
private
static
final String TAG =
"MainActivity";
EditText p_w_picpathEditText =
null ;
Button button ;
ImageView p_w_picpathView ;
@Override
public
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
p_w_picpathEditText = (EditText) findViewById(R.id.editText_url);
p_w_picpathView = (ImageView) findViewById(R.id.p_w_picpathView);
button = (Button) findViewById(R.id.button_get);
button.setOnClickListener(
new OnClickListener() {
public
void onClick(View v) {
// TODO Auto-generated method stub
String Url = p_w_picpathEditText.getText().toString();
try {
//獲得圖片二進制數據
byte[] data = GetImage.getImage(Url);
//將二進制數據轉換成位圖
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
//顯示圖片
p_w_picpathView.setImageBitmap(bitmap);
}
catch (Exception e) {
Toast.makeText(MainActivity.
this,
"連接延時", Toast.LENGTH_LONG).show();
Log.e(TAG, e.toString());
}
}
});
}
}
package com.yanjun.getImage;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public
class GetImage {
/**
* 獲取路徑方法
* @param path 路徑
* @return
* @throws Exception
*/
public
static
byte[]getImage(String path)
throws Exception {
// 從網絡上獲取圖片--UUL對象用來封裝路徑
URL url =
new URL(path);
// 打開路徑連接---獲得HttpURLConnection對象
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();
// 經過HTTP協議請求網絡圖片---設置請求方式:get/post
httpURLConnection.setRequestMethod(
"GET");
// 設置鏈接超時
httpURLConnection.setConnectTimeout(5*1000);
// 從外界想手機應用內傳遞數據----經過輸入流獲取圖片數據
InputStream inputStream = httpURLConnection.getInputStream();
// 從輸入流中獲取圖片的二進制數據----readInputStream()
return StreamTool.readInputStream(inputStream);
}
}
package com.yanjun.getImage;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public
class StreamTool {
/**從輸入流獲取數據
* @param inSream 輸入流
* @return
* @throws Exception
*/
public
static
byte[] readInputStream(InputStream inSream)
throws Exception {
ByteArrayOutputStream byteArrayOutputStream =
new ByteArrayOutputStream();
// 定義一個緩衝區
byte[] buffer =
new
byte[1024];
int len = 0;
// 不斷的從流裏讀取數據---while循環---nSream.read(buffer)表示從流裏讀取數據到緩衝區
// 讀取到末尾時,返回值是-1;
while ((len = inSream.read(buffer)) != -1) {
// 將緩衝區的數據寫到輸出流中
byteArrayOutputStream.write(buffer, 0, len);
}
inSream.close();
return byteArrayOutputStream.toByteArray(); } }