android 42 获取图片

简介:


资源中获取图片:可以从工程assets文件夹、res/drawble文件夹、sd卡、服务端下载图片。

 页面:

复制代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnDecodeFile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="从文件解析图片" />

    <Button
        android:id="@+id/btnDecodeStream"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="丛输入流解析" />

    <Button
        android:id="@+id/btnDecodeResource"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="从项目res/drawble中解析" />

    <Button
        android:id="@+id/btnDecodeByteArray"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="从字节数组解析" />
    <ImageView                             显示解析的图片
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"/>
</LinearLayout>
复制代码

 java

复制代码
package com.sxt.day06_08;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class MainActivity extends Activity {
    ImageView mImageView;
    static final String FILE_NAME="sxt_logo.png";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        setListener();
    }

    private void setListener() {
        setResetClickListener();
        setDecodeFileClickListener();
        setDecodeResourceClickListener();
        setDecodeStreamClickListener();
        setDecodeByteArrayClickListener();
    }

    private void setDecodeByteArrayClickListener() {
        findViewById(R.id.btnDecodeByteArray).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(){
                    public void run() {
                        HttpGet get=new HttpGet("http://10.0.2.2/"+FILE_NAME);//服务端资源文件路径
                        HttpClient client=new DefaultHttpClient();
                        try {
                            HttpResponse response = client.execute(get);
                            HttpEntity entity = response.getEntity();//
                            byte[] data = EntityUtils.toByteArray(entity);
                            final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                            //工作线程不能修改UI,可以用Handler做,runOnUiThread方法会把里面的代码发送给主线程,修改UI。
                            //Runnable可以被多个线程共享,工作线程可以把该Runnable对象交给主线程由主线程执行。
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    mImageView.setImageBitmap(bitmap);
                                }
                            });
                        } catch (ClientProtocolException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }finally{
                            if(client!=null){
                                client.getConnectionManager().shutdown();//关闭
                            }
                        }
                    };
                }.start();
            }
        });
    }

    
    private void setDecodeStreamClickListener() {
        findViewById(R.id.btnDecodeStream).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
                File file=new File(dir, FILE_NAME);//sd卡图片路径
                FileInputStream in=null;
                try {
                    in=new FileInputStream(file);
                    Bitmap bitmap = BitmapFactory.decodeStream(in);
                    mImageView.setImageBitmap(bitmap);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }finally{
                    if(in!=null){
                        try {
                            in.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        });
    }

    private void setDecodeResourceClickListener() {
        findViewById(R.id.btnDecodeResource).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mImageView.setImageResource(R.drawable.sxt_logo);
            }
        });
    }

    private void setResetClickListener() {//点击图片还原
        findViewById(R.id.iv).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mImageView.setImageResource(R.drawable.ic_launcher);
            }
        });
    }

    //获取sd卡的图片文件
    private void setDecodeFileClickListener() {
        findViewById(R.id.btnDecodeFile).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);//sd卡的图片的路径
                File file=new File(dir, FILE_NAME);//获取sd卡的图片文件
                Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
                mImageView.setImageBitmap(bitmap);
            }
        });
    }

    private void initView() {
        mImageView=(ImageView) findViewById(R.id.iv);
    }
}
复制代码

 工程描述文件添加:

    <uses-permission android:name="android.permission.INTERNET"/>     申请网络权限
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>   申请读sd卡权限

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4889921.html,如需转载请自行联系原作者


相关文章
|
4月前
|
XML Java Android开发
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
45 0
|
4月前
|
XML Java Android开发
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
175 0
|
7月前
|
存储 编解码 Android开发
Android关于图片方向问题
Android关于图片方向问题
41 0
|
4月前
|
XML JSON Java
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
69 0
|
23天前
|
Android开发
Android保存图片到相册(适配android 10以下及以上)
Android保存图片到相册(适配android 10以下及以上)
21 1
|
6月前
|
SQL 人工智能 移动开发
Android etc1tool之png图片转换pkm 和 zipalign简介
etc1tool 是一种命令行实用程序,可用于将 PNG 图片编码为 ETC1 压缩标准格式(PKM),并将 ETC1 压缩图片解码回 PNG。
|
8月前
|
Java Android开发
Android 保存资源图片到相册最新写法适用于Android10.0及以上
Android 保存资源图片到相册最新写法适用于Android10.0及以上
585 0
|
8月前
|
SQL 数据库 Android开发
Android 访问系统相册选中图片,并返回该图片的路径
Android 访问系统相册选中图片,并返回该图片的路径
99 0
|
4月前
|
API Android开发
[Android]图片加载库Glide
[Android]图片加载库Glide
55 0
|
4月前
|
Android开发
[Android]制作9-Patch图片
[Android]制作9-Patch图片
42 0