android上显示网络图片
转载自:传智播客教程
1.先在j2ee项目上做一个测试项目,得到网络图片并生成文件。
package cn.itcast.net; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class ImageRequest { /** * @param args */ public static void main(String[] args) throws Exception { URL url = new URL("http://i3.itc.cn/20100707/76c_0969b700_d5b4_41cd_8243_9b486be92cc4_0.jpg"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5 * 1000); InputStream inStream = conn.getInputStream();//通过输入流获取图片数据 byte[] data = readInputStream(inStream);//得到图片的二进制数据 File imageFile = new File("itcast.jpg"); FileOutputStream outStream = new FileOutputStream(imageFile); outStream.write(data); outStream.close(); } public static byte[] readInputStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while( (len=inStream.read(buffer)) != -1 ){ outStream.write(buffer, 0, len); } inStream.close(); return outStream.toByteArray(); } }
2.在andorid上开发:
main.xml
<?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:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/urlpath" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="http://i3.itc.cn/20100707/76c_0969b700_d5b4_41cd_8243_9b486be92cc4_0.jpg" android:id="@+id/urlpath" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" android:id="@+id/button" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" /> </LinearLayout>
package cn.itcast.image; import cn.itcast.service.ImageService; 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.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; public class ImageShowActivity extends Activity { private static final String TAG = "ImageShowActivity"; private EditText pathText; private ImageView imageView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); pathText = (EditText) this.findViewById(R.id.urlpath); imageView = (ImageView) this.findViewById(R.id.imageView); Button button = (Button)this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String path = pathText.getText().toString(); try { byte[] data = ImageService.getImage(path); Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//生成位图 imageView.setImageBitmap(bitmap);//显示图片 } catch (Exception e) { Toast.makeText(ImageShowActivity.this, R.string.error, 1).show(); Log.e(TAG, e.toString()); } } }); } }
package cn.itcast.service; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import cn.itcast.utils.StreamTool; public class ImageService { public static byte[] getImage(String path) throws Exception { URL url = new URL("http://i3.itc.cn/20100707/76c_0969b700_d5b4_41cd_8243_9b486be92cc4_0.jpg"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5 * 1000); InputStream inStream = conn.getInputStream();//通过输入流获取图片数据 return StreamTool.readInputStream(inStream);//得到图片的二进制数据 } }
package cn.itcast.utils; import java.io.ByteArrayOutputStream; import java.io.InputStream; public class StreamTool { /** * 从输入流中获取数据 * @param inStream 输入流 * @return * @throws Exception */ public static byte[] readInputStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while( (len=inStream.read(buffer)) != -1 ){ outStream.write(buffer, 0, len); } inStream.close(); return outStream.toByteArray(); } }
浙公网安备 33010602011771号