拍照与摄像头的意图,并保存到文件 [英] Take picture with camera intent and save to file

查看:98
本文介绍了拍照与摄像头的意图,并保存到文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  

可能重复:
  <一href="http://stackoverflow.com/questions/8588838/android-camera-save-image-into-a-new-folder-in-sd-card">Android相机 - 图像保存到SD卡中一个新的文件夹

我试图拍照,并将其保存到一个文件中。问题卡梅斯我试图将位图保存到文件中。这是我的code:

 私人无效takePic(){
    意图cameraIntent =新的意图(
            android.provider.MediaStore.ACTION_IM​​AGE_CAPTURE);
    startActivityForResult(cameraIntent,2);


}

公共无效onActivityResult(INT申请code,INT结果code,意图数据){
如果(要求code == 2){
            。位图照片=(位图)data.getExtras()获得(数据);
            ImageView的试验=(ImageView的)findViewById(R.id.test);
            test.setImageBitmap(照片);

            尝试 {
                FileOutputStream中出=新的FileOutputStream(文件名);
                photo.com preSS(Bitmap.Com pressFormat.JPEG,90,出);
            }赶上(例外五){
                e.printStackTrace();
            }
        }
    }
 

而在logcat中的例外:

  04-02 14:46:51.975:W / IInputConnectionWrapper(2225):showStatusIcon上的非活动InputConnection
04-02 14:46:56.135:W / System.err的(2225):java.io.FileNotFoundException:/文件名(只读文件系统)
04-02 14:46:56.135:W / System.err的(2225):在org.apache.harmony.luni.platform.OSFileSystem.open(本机方法)
04-02 14:46:56.145:W / System.err的(2225):在dalvik.system.BlockGuard $ WrappedFileSystem.open(BlockGuard.java:232)
04-02 14:46:56.145:W / System.err的(2225):在java.io.FileOutputStream中的&LT; INIT&GT;(FileOutputStream.java:94)
04-02 14:46:56.145:W / System.err的(2225):在java.io.FileOutputStream中的&LT; INIT&GT;(FileOutputStream.java:165)
04-02 14:46:56.145:W / System.err的(2225):在java.io.FileOutputStream中的&LT; INIT&GT;(FileOutputStream.java:144)
 

解决方案

RY以下code是解决你的问题之一::

 静态乌里capturedImageUri = NULL;
@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);
    this.imageView =(ImageView的)this.findViewById(R.id.imageView1);
    按钮photoButton =(按钮)this.findViewById(R.id.button1);
    photoButton.setOnClickListener(新View.OnClickListener(){

        @覆盖
        公共无效的onClick(视图v){
            日历CAL = Calendar.getInstance();
            档案文件=新的文件(Environment.getExternalStorageDirectory(),(cal.getTimeInMillis()+.JPG));
            如果(!file.exists()){
                尝试 {
                    file.createNewFile();
                }赶上(IOException异常E){
                    // TODO自动生成的catch块
                    e.printStackTrace();
                }
            } 其他 {
                file.delete();
                尝试 {
                    file.createNewFile();
                }赶上(IOException异常E){
                    // TODO自动生成的catch块
                    e.printStackTrace();
                }
            }
            capturedImageUri = Uri.fromFile(文件);
            意图I =新的意图(android.provider.MediaStore.ACTION_IM​​AGE_CAPTURE);
            i.putExtra(MediaStore.EXTRA_OUTPUT,capturedImageUri);
            startActivityForResult(ⅰ,CAMERA_RESULT);
        }
    });
    保护无效onActivityResult(INT申请code,INT结果code,意图数据){
        如果(要求code == CAMERA_REQUEST){
            //位图的照片=(位图)data.getExtras()获得(数据);
            //imageView.setImageBitmap(photo);
            尝试 {
                点阵位图= MediaStore.Images.Media.getBitmap(getApplicationContext()getContentResolver(),capturedImageUri。);
                imageView.setImageBitmap(位);
            }赶上(FileNotFoundException异常E){
                // TODO自动生成的catch块
                e.printStackTrace();
            }赶上(IOException异常E){
                // TODO自动生成的catch块
                e.printStackTrace();
            }
        }
    }
 

Possible Duplicate:
Android Camera - Save image into a new folder in SD Card

i'm trying to take picture and save it to a file. The problem cames i'm trying to save the bitmap to a file. Here is my code:

private void takePic() {
    Intent cameraIntent = new Intent(
            android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent, 2);


}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 2) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            ImageView test = (ImageView) findViewById(R.id.test);
            test.setImageBitmap(photo);

            try {
                FileOutputStream out = new FileOutputStream("filename");
                photo.compress(Bitmap.CompressFormat.JPEG, 90, out);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

And the exceptions in logcat:

04-02 14:46:51.975: W/IInputConnectionWrapper(2225): showStatusIcon on inactive InputConnection
04-02 14:46:56.135: W/System.err(2225): java.io.FileNotFoundException: /filename (Read-only file system)
04-02 14:46:56.135: W/System.err(2225):     at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
04-02 14:46:56.145: W/System.err(2225):     at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
04-02 14:46:56.145: W/System.err(2225):     at java.io.FileOutputStream.<init>(FileOutputStream.java:94)
04-02 14:46:56.145: W/System.err(2225):     at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
04-02 14:46:56.145: W/System.err(2225):     at java.io.FileOutputStream.<init>(FileOutputStream.java:144)

解决方案

ry the below code is one of the solution to your problem::

static Uri capturedImageUri = null;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    this.imageView = (ImageView) this.findViewById(R.id.imageView1);
    Button photoButton = (Button) this.findViewById(R.id.button1);
    photoButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Calendar cal = Calendar.getInstance();
            File file = new File(Environment.getExternalStorageDirectory(), (cal.getTimeInMillis() + ".jpg"));
            if (!file.exists()) {
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } else {
                file.delete();
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            capturedImageUri = Uri.fromFile(file);
            Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            i.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);
            startActivityForResult(i, CAMERA_RESULT);
        }
    });
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_REQUEST) {
            //Bitmap photo = (Bitmap) data.getExtras().get("data");
            //imageView.setImageBitmap(photo);
            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), capturedImageUri);
                imageView.setImageBitmap(bitmap);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

这篇关于拍照与摄像头的意图,并保存到文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆