Android下载图片/调用系统相机拍照、显示并保存到本地

package com.example.testhttpget;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

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

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {

	ImageView iamgeview = null;

	Handler myHandler = new Handler() {
        public void handleMessage(Message msg) {
             switch (msg.what) {
                  case 1:
                	  iamgeview.setImageBitmap((Bitmap)msg.obj);
                       break;
             }
             super.handleMessage(msg);
        }
   };  

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView hello = (TextView)findViewById(R.id.hello);
        iamgeview = (ImageView)findViewById(R.id.imageview);

        // 子线程网络下载图片
        new Thread(){
        	public void run(){
        		String imgurl = "http://photocdn.sohu.com/20111123/Img326603573.jpg";
        		HttpGet mHttpGet = new HttpGet(imgurl);

//        		 HttpGet mHttpGet = new HttpGet("http://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E7%86%8A%E7%8" +
//        		 		"C%AB&step_word=&hs=0&pn=0&spn=0&di=28270682580&pi=&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=404637145%2C3982267385&os=3438506744%2C3869227355&simid=0%2C0&adpicid=0&ln=1975&fr=&fmq=1475036112689_R&fm=&ic=undefined&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&ist=&jit=&cg=&bdtype=11&oriquery=&objurl=http%3A%2F%2Fpic4.40017.cn%2Fscenery%2Fdestination%2F2016%2F07%2F17%2F16%2FNylDjq.jpg" );
        		 HttpClient mHtppClient = new DefaultHttpClient();
        		 try{
        			 // 发送get请求并获得相应对象
        			HttpResponse httpRespose = mHtppClient.execute(mHttpGet);
        			// 取得消息实体
        			HttpEntity entrie = httpRespose.getEntity();
        			 // 从消息实体取得输入流
        			InputStream inputstream = entrie.getContent();
        			// 将输入流转化成BufferedReader
        			BufferedReader bufferReader = new BufferedReader(
        					new InputStreamReader(inputstream));
        			String result = "";
        			String line = "";

//        			for(;(line = bufferReader.readLine())!=null;){
//        				result += line ;
//        			}
//        			hello.setText(result);

        			Bitmap bitmap = BitmapFactory.decodeStream(inputstream);  

        			saveImg2SDcard(bitmap,"/WebTakePhone.jpg");

        			Message msg = new Message();
        			msg.obj = bitmap;
        			msg.what = 1;
        			myHandler.sendMessage(msg);
        		 }catch(Exception e){
//        			 hello.setText("请求错误"+e.toString());
        		 };
        	}
        }.start();

        // 调用系统相机拍照并保存图片、展示图片
        findViewById(R.id.takephotos).setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 调用系统相机
				Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		        startActivityForResult(intent,1);
			}
		});
    }

    @Override
   	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   		super.onActivityResult(requestCode, resultCode, data);
   		if(resultCode == Activity.RESULT_OK){
   			Bundle bundle = (Bundle)data.getExtras();
   			Bitmap bitmap = (Bitmap)bundle.get("data");

   			saveImg2SDcard(bitmap,"/systemTakePhone.jpg");
   		}
   	}

    private void saveImg2SDcard(Bitmap bitmap,String fileName) {
    	FileOutputStream fos;
			try {
				if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
					fos = new FileOutputStream(Environment.getExternalStorageDirectory().getAbsoluteFile()+fileName);
				}else{
					fos = new FileOutputStream(getFilesDir()+fileName);
				}
				bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
				iamgeview.setImageBitmap(bitmap);
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
	}

	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

  

时间: 2025-01-03 04:02:59

Android下载图片/调用系统相机拍照、显示并保存到本地的相关文章

Android 调用系统相机拍照保存以及调用系统相册的方法

系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的.下面讲讲调用系统相机拍照并保存图片和如何调用系统相册的方法. 首先看看调用系统相机的核心方法: Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera, CAMERA); 相机返回的数据通过下面的回调方法取得,并处理: public static final int CAMERA  = 0x01; @Over

android调用系统相机拍照并保存在本地

import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Calendar; import java.util.Locale; import android.annotation.SuppressLint; import android.app.Activity; import an

Android7.0调用系统相机拍照、读取系统相册照片+CropImageView剪裁照片

Android手机拍照.剪裁,并非那么简单 简书地址:[我的简书–T9的第三个三角] 前言 项目中,基本都有用户自定义头像或自定义背景的功能,实现方法一般都是调用系统相机–拍照,或者系统相册–选择照片,然后进行剪裁,最终设为头像或背景. 而在Android6.0之后,需要动态获取权限,而且Android7.0之后,无法直接根据拍照返回的URI拿到图片,这是因为从安卓7.0开始,直接使用本地真实路径被认为是不安全的,会抛出FileUriExposedExCeption异常,本文就是基于这个功能去针

Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题

版权声明:本文为博主原创文章,未经博主允许不得转载. 正常情况下调用系统相机拍照: 如果拍照后点击的是“确定”图标,返回的resultCode = -1(Activity.RESULT_OK): 如果点击的是底部的“返回”键,返回的resultCode = 0(Activity.RESULT_CANCELED). 简单的调用系统相机的写法: //调用系统拍照 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); String p

Android调用系统相机拍照保存照片很小解决方案

保存图片小的一般操作步骤: 1. 调用系统相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 1); 2. 保存照片 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {  // TODO Auto-generated method s

Android简单的调用系统相机和相册

  public void reasonAdd(View v)     {        final String [] strs=new String[]{"拍照","相册"};         AlertDialog.Builder builder=new AlertDialog.Builder(this);         builder.setTitle("照片");         builder.setItems(strs, new 

android 调用系统相机拍照 获取原图

好吧,为了这个问题又折腾了一整天.之前在网上找来的方法,如果在onActivityResult中直接用data.getData()的方式来生成bitmap,其实获取的是拍照生成的缩略图!看看尺寸就知道了.如果要获取原图,还需要一番折腾(特别是对于手里这个Samsung i9000)——之前朋友在不同的机型上使用的方法在我这里一直报错,且属于那种uncaught的错误-.- 话说回来,具体的折腾方法如下(如果不幸你看到了,希望不要“折疼了”): 在拍照的出发按钮的点击事件中写入如下代码: toCa

安卓开发之-调用系统相机拍照应注意要点。

(一)调用相机拍照保存至指定文件夹,intent.putExtra(file)可将拍到的照片直接保存到文件夹 但此方法不可用于拍摄视频,同样的在摄像时,如果传入路径的话,会出现画面卡死不动,而同时在传入的路径下面会有一个为空的文件,文件名是对的,但没有数据,而在回调函数onActivityResult中的data不为空,会为你传入的路径名.所以在使用Intent调用相机拍照或摄像时最好不要传入存储路径,否则在不同的机子上会出现不同的问题,按照默认的给定路径寻找文件即可. (二)如下:拍照 Int

调用系统相机拍照,保存照片,调用系统裁剪API对照片处理,显示裁剪之后的照片

package com.pingyijinren.test; import android.annotation.TargetApi; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.ContentResolver; import android.content.Intent; impo