iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现调用摄像头拍照并存储照片
  • 257
分享到

Android实现调用摄像头拍照并存储照片

2024-04-02 19:04:59 257人浏览 独家记忆
摘要

目录1、前期准备2、主要方法1、需要使用Intent调用摄像头2、需要检查SD卡(外部存储)状态3、获取图片及其压缩图片3、案例展示1、Layout2、MainActivity1、前

1、前期准备

需要在Manifest中添加相关权限

    <uses-permission Android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2、主要方法

1、需要使用Intent调用摄像头

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//调用Camera
startActivityForResult(intent, Activity.RESULT_OK);//如果正常,则返回    Activity.RESULT_OK    本质为 int类型的1

2、需要检查SD卡(外部存储)状态

Environment.MEDIA_MOUNTED sd卡在手机上正常使用状态

Environment.MEDIA_UNMOUNTED 用户手工到手机设置中卸载sd卡之后的状态

Environment.MEDIA_REMOVED 用户手动卸载,然后将sd卡从手机取出之后的状态

Environment.MEDIA_BAD_REMOVAL 用户未到手机设置中手动卸载sd卡,直接拨出之后的状态

Environment.MEDIA_SHARED 手机直接连接到电脑作为u盘使用之后的状态

Environment.MEDIA_CHECKINGS 手机正在扫描sd卡过程中的状态

在代码中的判断

String sdStatus = Environment.getExternalStorageState();
if(!sdStatus.equals(Environment.MEDIA_MOUNTED)){
                System.out.println(" ------------- sd card is not avaiable ---------------");
                return;
}

3、获取图片及其压缩图片

String name = "photo.jpg";//定义图片名称

Bundle bundle = data.getExtras();//data为onActivityResult中的intent类型的参数
Bitmap bitmap = (Bitmap) bundle.get("data");//bitmap

//            File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/");
//            file.mkdirs(); //创建文件夹

//            String fileName = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+name;
String fileName = "sdcard"+"/"+name;//初始化文件路径

FileOutputStream fos =null;//初始化文件输出流

try {
    // System.out.println(fileName);	// 测试用,查看文件路径
    fos=new FileOutputStream(fileName);	// 输出文件到外部存储
    //今天第一次正视这个bitmap.compress()方法,它用来压缩图片大小。
    
    bitmap.compress(Bitmap.CompressFORMat.JPEG,100,fos);	
    
} catch (FileNotFoundException e) {
    e.printStackTrace();
}finally {
    try {
        fos.flush();	//释放输出流
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

3、案例展示

1、Layout

<RelativeLayout xmlns:android="Http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_take_photo"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="take photo"
        android:id="@+id/takephoto"
        />
    <ImageView
        android:layout_below="@+id/takephoto"
        android:layout_width="400dp"
        android:layout_height="400dp"
        android:id="@+id/picture"
        />
</RelativeLayout>

2、MainActivity

package icu.whatsblog.CameraCrop;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Environment;
import android.provider.MediaStore;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import androidx.appcompat.app.AppCompatActivity;

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

import lee.suk.cameracrop.R;

public class MainActivity extends AppCompatActivity {

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

        ((Button) findViewById(R.id.takephoto)).setOnClickListener(new View.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){
            String sdStatus = Environment.getExternalStorageState();

            if(!sdStatus.equals(Environment.MEDIA_MOUNTED)){
                System.out.println(" ------------- sd card is not avaiable ---------------");
                return;
            }


            String name = "photo.jpg";

            Bundle bundle = data.getExtras();
            Bitmap bitmap = (Bitmap) bundle.get("data");

//            File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/");
//            file.mkdirs(); //创建文件夹

//            String fileName = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+name;
            String fileName = "sdcard"+"/"+name;

            FileOutputStream fos =null;

            try {
                System.out.println(fileName);
                fos=new FileOutputStream(fileName);
                bitmap.compress(Bitmap.CompressFormat.JPEG,100,fos);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }finally {
                try {
                    fos.flush();
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
            ((ImageView) findViewById(R.id.picture)).setImageBitmap(bitmap);
        }
    }
}

到此这篇关于Android实现调用摄像头拍照并存储照片的文章就介绍到这了,更多相关Android调用摄像头拍照并存储内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android实现调用摄像头拍照并存储照片

本文链接: https://www.lsjlt.com/news/162168.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现调用摄像头拍照并存储照片
    目录1、前期准备2、主要方法1、需要使用Intent调用摄像头2、需要检查SD卡(外部存储)状态3、获取图片及其压缩图片3、案例展示1、Layout2、MainActivity1、前...
    99+
    2022-11-12
  • Androidstudio调用摄像头拍照并保存照片
    本文实例为大家分享了Androidstudio调用摄像头拍照并保存照片的具体代码,供大家参考,具体内容如下 首先在manifest.xmlns文件中声明权限 <xml vers...
    99+
    2022-11-13
  • Python实现调用摄像头拍摄照片
    目录步骤代码实现效果步骤 用opencv打开摄像头并拍照保存照片到本地获取邮箱(如qq邮箱)的授权码,方法可自行百度将照片以附件的形式发送到指定邮箱删除本地照片 代码 import ...
    99+
    2022-11-11
  • VS2017+Qt5+Opencv3.4调用摄像头拍照并存储
    1. Qt的ui界面,找着画就好 2.头文件直接贴出,之后有时间慢慢解释吧 #pragma once #include <QtWidgets/QWidge...
    99+
    2022-11-12
  • Python如何实现调用摄像头拍摄照片
    本文小编为大家详细介绍“Python如何实现调用摄像头拍摄照片”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python如何实现调用摄像头拍摄照片”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。步骤用opencv...
    99+
    2023-07-02
  • VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储
    这篇文章主要介绍了VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Qt的ui界面,找着画就好头文件直...
    99+
    2023-06-15
  • Android实现控制摄像头拍照
    现在的手机一般都会提供相机功能,有些相机的镜头甚至支持1300万以上像素,有些甚至支持独立对焦、光学变焦这些只有单反才有的功能,甚至有些手机直接宣传可以拍到星星。可以说手机已经变成了...
    99+
    2022-11-13
  • Android中怎么调用摄像头拍照
    本篇文章给大家分享的是有关Android中怎么调用摄像头拍照,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步,获取权限if (ContextCompat.chec...
    99+
    2023-06-04
  • python实现调用摄像头并拍照发邮箱
    项目地址: https://github.com/flygaga/camera 思路 通过opencv调用摄像头拍照保存图像到本地 用email库构造邮件内容,保存图片以附件形式插入邮件内容 用smtplib库发送...
    99+
    2022-06-02
    python 调用摄像头 python 拍照发邮件 python 摄像头拍照
  • python调用摄像头实现拍照功能
    目录 1.介绍 2.系统依赖 (1)OpenCV-Python库 (2)Tkinter库 (3)Pillow库 (4)Time库 3.系统代码 4.效果展示 5.注意事项 1.介绍         这是一个有趣的项目,通过Python程...
    99+
    2023-09-21
    python 开发语言
  • Android如何实现控制摄像头拍照
    这篇文章主要介绍Android如何实现控制摄像头拍照,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用Camera控制手机拍照的步骤如下: 1) 调用Camera的open()方法打开相机。该方法默认打开后...
    99+
    2023-06-29
  • Java+OpenCV调用摄像头实现拍照功能
    目录环境准备制作主界面整体结构介绍核心代码与知识点讲解JPanel中如何显示摄像头的图像OpenCV调用摄像头使用摄像头拍照完整代码OpenCVUtil.javaImageUtils...
    99+
    2022-11-13
  • Vue调用PC摄像头实现拍照功能
    本文实例为大家分享了Vue调用PC摄像头实现拍照功能的具体代码,供大家参考,具体内容如下 项目需求:可以本地上传头像,也可以选择拍摄头像上传。 组件: 1、Camera组件:实现 打...
    99+
    2022-11-12
  • python怎么实现调用摄像头并拍照发邮箱
    这篇文章主要介绍了python怎么实现调用摄像头并拍照发邮箱,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python的五大特点是什么python的五大特点:1.简单易学,开...
    99+
    2023-06-14
  • Vue实现调用PC端摄像头实时拍照
    Vue之调用PC端摄像头实时拍照,供大家参考,具体内容如下 由于我使用的是点击按钮打开模态框拍照所以在这里吧按钮和模态框代码都粘贴如下。 <!-- 打开模态框按钮--&g...
    99+
    2022-11-12
  • Electron怎么实现调用外接摄像头并拍照上传
    这篇文章主要介绍了Electron怎么实现调用外接摄像头并拍照上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Electron怎么实现调用外接摄像头并拍照上传文章都会有所收获,下面我们一起来看看吧。背景基于E...
    99+
    2023-07-05
  • Electron调用外接摄像头并拍照上传实现详解
    目录背景需求分析实现视频采集MediaDevices.getUserMedia()拍照生成图片上传图片至CDN1. 使用HTMLCanvasElement.toBlob()语法参数2...
    99+
    2023-02-24
    Electron调用摄像头拍照上传 Electron调用外接摄像头
  • vue调取电脑摄像头实现拍照功能
    本文实例为大家分享了vue调取电脑摄像头实现拍照功能的具体代码,供大家参考,具体内容如下 实现效果图: 拍照前&拍照后(我电脑摄像头挡住的,所以图片是灰色) 1.点击拍照上...
    99+
    2022-11-12
  • Android调用手机摄像头拍照和录音功能
    本文实例为大家分享了Android调用手机摄像头拍照和录音功能的具体代码,供大家参考,具体内容如下 调用摄像头拍照: public class MainActivity extend...
    99+
    2022-11-13
  • 怎么用Java+OpenCV调用摄像头实现拍照功能
    这篇文章主要介绍了怎么用Java+OpenCV调用摄像头实现拍照功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Java+OpenCV调用摄像头实现拍照功能文章都会有所收获,下面我们一起来看看吧。环境准...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作