博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android如何拍照以及返回拍的图片(经过验证的实际例子)
阅读量:4551 次
发布时间:2019-06-08

本文共 3230 字,大约阅读时间需要 10 分钟。

package a.test;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.Gravity;
import android.widget.ImageView;
import android.widget.Toast;
public class a extends Activity {
 /** Called when the activity is first created. */
 String SD_CARD_TEMP_DIR;
 private byte[] mContent;
 Bitmap myBitmap;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  //
  SD_CARD_TEMP_DIR = Environment.getExternalStorageDirectory()
    + File.separator + "tmpPhoto.jpg";
  Intent takePictureFromCameraIntent = new Intent(
    MediaStore.ACTION_IMAGE_CAPTURE);
  takePictureFromCameraIntent.putExtra(
    android.provider.MediaStore.EXTRA_OUTPUT, Uri
      .fromFile(new File(SD_CARD_TEMP_DIR)));
  startActivityForResult(takePictureFromCameraIntent, 10);
  //
 }
 //
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  ContentResolver resolver = getContentResolver();
  try {
   File f = new File(SD_CARD_TEMP_DIR);
   try {
    Uri capturedImage = Uri
      .parse(android.provider.MediaStore.Images.Media
        .insertImage(getContentResolver(), f
          .getAbsolutePath(), null, null));
    // Log.i("camera", "Selected image: " +
    // capturedImage.toString());
    // f.delete();
    Toast toast = Toast.makeText(getApplicationContext(),
      capturedImage.toString(), Toast.LENGTH_SHORT);
    toast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0);
    toast.show();
    //
    ImageView a = (ImageView) findViewById(R.id.imageView1);
    // 将图片内容解析成字节数组
    mContent = readStream(resolver.openInputStream(Uri
      .parse(capturedImage.toString())));
    // 将字节数组转换为ImageView可调用的Bitmap对象
    myBitmap = getPicFromBytes(mContent, null);
    // //把得到的图片绑定在控件上显示
    a.setImageBitmap(myBitmap);
    //
    //
   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  } catch (Exception e) {
   // TODO: handle exception
   System.out.println(e.getMessage());
  }
 }
 //
 public static Bitmap getPicFromBytes(byte[] bytes,
   BitmapFactory.Options opts) {
  if (bytes != null)
   if (opts != null)
    return BitmapFactory.decodeByteArray(bytes, 0, bytes.length,
      opts);
   else
    return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
  return null;
 }
 //
 public static byte[] readStream(InputStream inStream) throws Exception {
  byte[] buffer = new byte[1024];
  int len = -1;
  ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  while ((len = inStream.read(buffer)) != -1) {
   outStream.write(buffer, 0, len);
  }
  byte[] data = outStream.toByteArray();
  outStream.close();
  inStream.close();
  return data;
 }
 //
 public static Bitmap getLoacalBitmap(String url) {
  try {
   FileInputStream fis = new FileInputStream(url);
   return BitmapFactory.decodeStream(fis);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
   return null;
  }
 }
 //
}

转载于:https://www.cnblogs.com/top5/archive/2012/03/16/2402289.html

你可能感兴趣的文章
How to use VisualSVN Server and TortoiseSVN to host your codes and control your codes' version
查看>>
微信小程序picker组件 - 省市二级联动
查看>>
Dynamics CRM 给视图配置安全角色
查看>>
Eclipse修改已存在的SVN地址
查看>>
C++ ACM基础
查看>>
(转)使用 python Matplotlib 库绘图
查看>>
进程/线程切换原则
查看>>
正则表达式语法
查看>>
20165301 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Vue的简单入门
查看>>
使用最快的方法计算2的16次方是多少?
查看>>
urllib 中的异常处理
查看>>
【SQL Server高可用性】高可用性概述
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
SQL优化:重新编译存储过程和表
查看>>
PCB“有铅”工艺将何去何从?
查看>>
Solr环境搭建
查看>>
ASP.NET的URL过滤
查看>>
自己写的Web服务器
查看>>
自定义定时组件
查看>>