拍照并保存到指定文件夹

关键代码:

protected void takePhoto(View v){
        if( v.getId() == R.id.btn ) {
            File dir = new File(Environment.getExternalStorageDirectory(),"Guo");
            if(!dir.exists()){
                dir.mkdir();
            }

            curFile = new File(dir, System.currentTimeMillis() + ".jpg");
            if( !curFile.exists() ){
                try{
                    curFile.createNewFile();
                }catch (IOException e){
                    e.printStackTrace();
                }

            }
            Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            it.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(curFile));
            startActivityForResult(it, TAKE_PHOTO);
        }
}

处理相机返回数据,即图片数据:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        switch (requestCode){
            case TAKE_PHOTO:
                if(resultCode == RESULT_OK){
                    //picture.setImageURI(Uri.fromFile(curFile));
                    int degree = readPictureDegree(curFile.getAbsolutePath());
                    BitmapFactory.Options opts=new BitmapFactory.Options();
                    opts.inSampleSize=2;
                    Bitmap cbitmap = BitmapFactory.decodeFile(curFile.getAbsolutePath(),opts);
                    Bitmap bitmap = rotaingImageView(degree, cbitmap);             sysImageNotify();
            picture.setImageBitmap(bitmap);           }           break;     } }

照相机拍照后,有些图片是获取图片的旋转角度

// 获取旋转角度
public  int readPictureDegree(String path) {
        int degree  = 0;
        try {
            ExifInterface exifInterface = new ExifInterface(path);
            int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
            switch (orientation) {
                case ExifInterface.ORIENTATION_ROTATE_90:
                    degree = 90;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    degree = 180;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_270:
                    degree = 270;
                    break;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return degree;
    }

  

旋转图片:

/*
    * 旋转图片
    */
    public  Bitmap rotaingImageView(int angle , Bitmap bitmap) {
        //旋转图片 动作
        Matrix matrix = new Matrix();;
        matrix.postRotate(angle);
        // 创建新的图片
        Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
                bitmap.getWidth(), bitmap.getHeight(), matrix, true);return resizedBitmap;
    }

图片保存进入文件夹后,在系统图库中显示

protected void sysImageNotify(){
	// 文件插入系统图库
        try {
            MediaStore.Images.Media.insertImage(
                    getContentResolver(),
                    curFile.getAbsolutePath(), curFile.getName(), null);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        // 最后通知图库更新
        sendBroadcast(
                new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                Uri.parse("file://" + Environment.getExternalStorageDirectory())
            )
        );

 }

  

所需权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
时间: 2024-09-29 23:00:31

拍照并保存到指定文件夹的相关文章

sublimeText3 中配置sass环境,并将编译后文件保存到指定文件夹

sass基于ruby引擎,所以安装时ass.compass之前需要安装ruby.具体的链接应该是(http://rubyinstaller.org/downloads).下载并安装相应的版本,勾选第二项(要在cmd中使用ruby). 打开命令行,输入ruby -v,查看我们安装的ruby版本信息. ruby安装完成之后,打开ruby的command面板,接下来就是安装sass了.Windows下安装sass有多种方法,这里说一下其中的两种: 1.到 Rubygems(http://rubygem

c# 多个图片单独上传 保存到指定文件夹 保存到数据库

1.引用js文件 <script src="~/Scripts/uploadPreview.js"></script> <html> //toCalid()在表单提交之前进行非空验证 <form action="/Home/insertImg" method="post" enctype="multipart/form-data"  onsubmit="return toCa

使用matlab批量处理图像后在指定文件夹存储

使用matlab批量处理图像后在指定文件夹存储 clear;clc;close all; Files=dir('D:\文件及下载相关\文档\MATLAB\postgraduate\Kodak\*.jpg'); N=length(Files); Names={}; Images={}; for k=1:N Names{k}=Files(k).name; Images{k}=imread(['D:\文件及下载相关\文档\MATLAB\postgraduate\Kodak\' Names{k}]);

Android学习之保存Bitmap到指定文件夹

/** * 保存图片到指定文件夹 * * @param bmp * @param filename * @return */ private boolean saveBitmapTofile(Bitmap bmp, String filename) { if (bmp == null || filename == null) return false; CompressFormat format = Bitmap.CompressFormat.JPEG; int quality = 100; O

IOS 对相册图片进行读取、存储到指定文件夹

这个示例程序主要用到了IOS中的UIImageView.UIImagePickerViewController.UIImage.NSFileManager等知识,结合这些知识构成一个小的应用程序,主要功能是对相册图片进行读取.存储到指定文件夹.从指定文件夹读取出来.这方面的知识在正式项目中用的是比较多的.做Android开发中,经常会使用到将图片保存到SD卡和从SD卡读取图片的操作,相比于Android在这方面的操作,IOS要方便许多. 基本功能是从相册选取一张图片,选完后显示在界面的UIIma

asp.net从服务器(指定文件夹)下载任意格式的文件到本地

一.我需要从服务器下载ppt文件到本地 protected void Btn_DownPPT_Click(object sender, EventArgs e)        {            DBService svc = new DBService();            svc.DownPpts();            string strFileName = "公报.ppt";            string filename = Context.Serve

C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中的方法

原文地址:http://www.biye5u.com/article/Csharp/fileprog/2011/4198.html 本文给出了一个在C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中的方法. public static void CopyFolder(string strFromPath,string strToPath){       //如果源文件夹不存在,则创建       if (!Directory.Exists(strFromPath))       {      

WPF获取读取电脑指定文件夹中的指定文件的地址

1 //保存指定文件夹中的指定文件的地址 2 3 string List<string> mListUri = new List<string>(); 4 5 //文件夹地址 6 7 string folderName = Environment.CurrentDirectory; 8 9 /// <summary> 10 /// 读取文件夹中指定文件 11 /// </summary> 12 public void LoadAllFile() 13 { 1

利用python实现每x分钟截屏一次存放到指定文件夹

#创建一个文件夹用来保存文件#每x分钟截屏一次存放到指定文件夹import osimport pyautogui as paimport timedef make_dir(dirs): if not os.path.exists(dirs): os.makedirs(dirs)#检测并且创建目录def get_file_path(dirs): time_format = "%a %b %d %H %M %S %Y" time_now=time.strftime(time_format,