Android调用系统相机拍照,并且模仿实现水印相机简单功能

uniapp安卓app实现水印相机(附完整代码) 在移动应用开发中,实时相机功能结合水印的需求十分常见。uniapp提供的uni.chooseImage(OBJECT)可以直接调用相机进行拍照,但部分机型中调用 uniapp提供的chooseImage API进行拍照后会出现应用闪退的bug(应用重启),出现该问题的原因。如果打卡拍照水印正常显示,背景是白屏,则是相机权限问题(1.manifest.json勾选;,是安卓系统回收资源,结束了应用进程导致的(调用系统相机进行拍摄,应用处于后台)。1.水印相机组件(这里创建页面时要选择nvue, 阅读详情


    

摘要:Android调用系统相机拍照,并且模仿实现水印相机简单功能

话说最近比较流行水印相机,动不动空间就会用水印相机拍水印照片,本人也比较喜欢,正好今天下午有点时间,就稍微模拟的实现了一下简单功能,不喜勿喷哦~作为学习交流的。

    我这边的实现的步骤是通过代码调用系统相机,然后获取拍下来的图片进行水印处理,可以加入水印的图片或者水印文字都行,最后把图片展示和保存在sdcard卡中。(看下效果图:)因为直接用的模拟器,所以相机拍出来的图片直接是系统,比较丑,自己的手机的系统相机被我删掉了。。晕


     (一)1:使用代码调用系统相机  

1
2
<span style="font-size:18px;">Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
                startActivityForResult(intent, 1);</span>

2:使用系统相机拍照确定之后,返回回来,在之前的Activity中重载protected void onActivityResult(int requestCode, int resultCode, Intent data)来获取其中的Bitmap对象.

具体方法为:Bundle bundle = data.getExtras();
//获取拍照返回的图片
bitmap= (Bitmap) bundle.get("data");

   (二)1:对图片进行加水印出来,方法比较简单,直接用Canvas进行drawBitmap还有drawText进行了  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
     * 进行添加水印图片和文字
     * 
     * @param src
     * @param waterMak
     * @return
     */
    public static Bitmap createBitmap(Bitmap src, Bitmap waterMak, String title) { 
        if (src == null) { 
            return src; 
        } 
        // 获取原始图片与水印图片的宽与高 
        int w = src.getWidth(); 
        int h = src.getHeight(); 
        int ww = waterMak.getWidth(); 
        int wh = waterMak.getHeight(); 
        Log.i("jiangqq", "w = " + w + ",h = " + h + ",ww = " + ww + ",wh = "
                + wh); 
        Bitmap newBitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888); 
        Canvas mCanvas = new Canvas(newBitmap); 
        // 往位图中开始画入src原始图片 
        mCanvas.drawBitmap(src, 0, 0, null); 
        // 在src的右下角添加水印 
        Paint paint = new Paint(); 
        //paint.setAlpha(100); 
        mCanvas.drawBitmap(waterMak, w - ww - 5, h - wh - 5, paint); 
        // 开始加入文字 
        if (null != title) { 
            Paint textPaint = new Paint(); 
            textPaint.setColor(Color.RED); 
            textPaint.setTextSize(16); 
            String familyName = "宋体"; 
            Typeface typeface = Typeface.create(familyName, 
                    Typeface.BOLD_ITALIC); 
            textPaint.setTypeface(typeface); 
            textPaint.setTextAlign(Align.CENTER); 
            mCanvas.drawText(title, w / 2, 25, textPaint); 
                
        } 
        mCanvas.save(Canvas.ALL_SAVE_FLAG); 
        mCanvas.restore(); 
        return newBitmap; 
    }

这样这个方法就会返回回去一个已经构造好的加有水印的图片,然后进行保存显示:


1
2
3
4
5
6
7
if (img != null) { 
                    water_img.setImageBitmap(img); 
                    //把水印图片也保存到sdcard中 
                    FileUtils.saveFile(img, sdf.format(new Date(System.currentTimeMillis()))+"2.jpg"); 
                } 
                 }else { 
                    Log.i("jiangqq", "拍照失败.");

(三)其中用的保存文件的工具类为:

1:检测sdcard卡

1
2
3
4
5
// 判断SD卡是否存在 
public static boolean externalMemoryAvailable() { 
    return android.os.Environment.getExternalStorageState().equals( 
            android.os.Environment.MEDIA_MOUNTED); 
}

2:图片保存至文件当中  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
     * 把图片村保存在相应的文件当中
     * @param pBitmap
     * @param pPathName
     */
    public static void saveFile(Bitmap pBitmap,String fileName) 
    { 
        File file=new File("/sdcard/pps_image"); 
        if(!file.exists()) 
        { 
            file.mkdirs(); 
        } 
        String filePathName=file.getAbsolutePath()+"/"+fileName; 
        FileOutputStream fos=null; 
        try { 
            fos=new FileOutputStream(filePathName); 
            pBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
            fos.flush(); 
            Log.i("jiangqq", "保存图片到sdcard卡成功."); 
        } catch (Exception e) { 
           e.printStackTrace(); 
        }finally
        { 
            if(fos!=null) 
            { 
                try { 
                    fos.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
        }

有兴趣的朋友可以一起私信我,一起交流学习,共同进步;

Android拍照+截取+相册获取截取图片+水印功能【完整】 1  拍照截取 原理就是通过intent调用系统的相机,拍完照后再回调进行操作,成功获取到拍完照的图片根据uri调用系统的裁剪页面,裁剪完也是在回调中进行处理,显示在页面的imageview中。 2  相册选取图片截取 原理也是通过intent打开系统的图片,用户选择完成以后在回调中根据图片的uri调用系统的裁剪页面,裁剪后在回调中进行处理并显示在本页面的控件中。 3 下面进行代码展示 ... 阅读详情

相关推荐

Android系统中实现水印效果

在Android应用开发中,我们经常需要为图片或者视频添加水印,以保护作品的版权和来源。本文将介绍如何在Android系统中添加水印效果,并实现类似安全模式水印的效果。以上就是实现Android系统中添加水印效果的基础步骤。通过自定义的WatermarkView控件,在onDraw方法中绘制水印文字,并动态将其添加到相应的布局中即可。需要注意的是,本文只是一个基本的实现示例,您可以根据实际需求进行扩展和优化,例如可以支持自定义水印文字、水印颜色和透明度等。Android系统中实现水印效果。

CodeJolt的博客 978

uniapp水印相机(水印照片,图片加水印)

uniapp项目添加水印相机功能(包含日期时间,地理位置,经纬度等)

千万亿 3171

基于JavaScript的智能水印相机微信小程序源码+项目说明.tar

【资源说明】 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!

Android水印相机

本篇文章实现的水印相机,类似于qq空间中的水印相机功能,因之前看过一个demo上实现了一个简陋的水印相机功能,觉得挺有意思,就在此基础上进行了修改,优化和完善,并增加了部分功能,使之更接近于qq水印相机功能。       支持功能: 1.前后置摄像头切换; 2.拍照对焦及点击屏幕对焦(前提是手机支持对焦功能); 3.相机画面会根据相机支持的分辨率调整,不会出现画面拉伸变形的情况; 4.支

白玉梁的专栏 5315

一款开源的水印相机应用 最低要求安卓10版本,项目编译SDK (compileSdk) 版本为34 本项目采用前端WebView与后端Java相结合的混合开发模式,实现了功能灵活与性能稳定的平衡

开源水印相机。最低支持安卓10,sdk版本为34,采用混合开发模式,webview前端+java后端。并可以以文件夹的形式管理相机。方便管理。照片携带导航二维码,可高度配置水印。如果有高德web服务的api key,可以启用天气和地理逆编码(显示位置信息)功能。搭配我的另一个开源项目,直接导入geo数据,可实现路线的匹配与桩号的自动计算功能。

Watermark Camera(iPhone源代码)

来源:Licence:MIT平台:iOS设备:iPhone / iPad作者:xyjdhc_408b4f     水印相机,模仿腾讯的水印相机应用。    功能介绍:    1、自定义照相机UI;    2、多张水印循环加载;    3、闪光灯设置;    4、前后摄像头切换;    5、拍照后静态图片显示,保存或取消拍摄的图。    测试准备:由于作者没有做屏幕大小适配,所以目前代码只能在iPhone 5 的4 inch屏幕正常拍照。若需在3.5 inch屏幕拍照,必须得调整各个按钮位置。    特殊图片准备:需要背景透明的水印图片,该demo中只提供了一张。如效果截图中,上方的粉红文字以

android模拟拍照,Android调用系统相机拍照,并且模仿实现水印相机简单功能

话说最近比较流行水印相机,动不动空间就会用水印相机拍水印照片,本人也比较喜欢,正好今天下午有点时间,就稍微模拟的实现了一下简单功能,不喜勿喷哦~作为学习交流的。我这边的实现的步骤是通过代码调用系统相机,然后获取拍下来的图片进行水印处理,可以加入水印的图片或者水印文字都行,最后把图片展示和保存在sdcard卡中。(看下效果图:)因为直接用的模拟器,所以相机拍出来的图片直接是系统,比较丑,自己的手机的...

weixin_42301889的博客 2688

从生成到检测:全面解析Deepfake技术的演进与对抗策略

本文全面解析了Deepfake技术的演进与对抗策略,从GAN生成技术到先进的检测手段,探讨了其在娱乐与安全领域的双重影响。文章详细介绍了Deepfake的核心原理、技术迭代关键节点以及最新的检测方法,揭示了AI生成与识别的激烈博弈。同时,展望了量子计算和生物特征认证在未来攻防战中的潜在应用。

jenkins8butler的博客 256

android相机拍照加水印,android 普通相机拍照加自己定义的水印

业务场景描述 :特殊照片防止被别人利用,需要添加水印,最近项目中要用到这一功能,记录一下先来一张效果图:思路:1.拍照功能就不用多说,用android 系统自带的相机拍照得到Bitmap2.自定义要添加水印的文本内容3.再把文本内容绘制到Bitmap上就可以4.下面是我自己封装的一个添加水印的工具类:public class CommonUtil {/****把自定义的文本内容生成一张Bitmap...

weixin_35949256的博客 1631

【接口自动化测试】cookie绕过验证码自动登录?(保持登录状态)

在编写接口自动化测试用例或其他脚本的过程中,经常会遇到需要绕过用户名/密码或验证码登录,去请求接口的情况,一是因为有时验证码会比较复杂,比如有些图形验证码,难以通过接口的方式去处理;再者,每次请求接口前如果都需要先去登录一次,这样不仅效率低,还耗费资源。 有些网站是使用cookie辨别用户身份的,此时我们便可以先登录一次,拿到登录成功后的cookie,后续请求时在请求头中加入该cookie,便可保持登录状态直接请求。

weixin_67553250的博客 2071

Windows下构建ImGui.Net

工具 Visual Studio 2017 操作 下载项目 git clone https://github.com/mellinoe/ImGui.NET.git 编译 右键以下两个项目并调试: ImGui.NET.SampleProgram ImGui.NET.SampleProgram.XNA Error fix 中间遇到一些问题: SDK版本不对 去微软官网下载安装对应版本 由于设置了代理被远程服务器拒绝连接 关闭代理(也许在环境变量中) nuget源无对应资源,404 NOT FOUN

jojozym的博客 1489

android 普通相机拍照加自己定义的水印

业务场景描述 :特殊照片防止被别人利用,需要添加水印,最近项目中要用到这一功能,记录一下 先来一张效果图: 思路: 1.拍照功能就不用多说,用android 系统自带的相机拍照得到Bitmap 2.自定义要添加水印的文本内容 3.再把文本内容绘制到Bitmap上就可以 4.下面是我自己封装的一个添加水印的工具类: public class CommonUtil { ...

beautifulYuan的博客 3900

2024从零开始使用VSCode编程(静态页面制作篇)HTML+CSS+JS阶段

VSCode第一个前端静态页面的编写

ssrsrrn的博客 9593

Android 调用系统相机并加时间水印

/*** * 启动拍照 */ private void capture(){ Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 获取文件 File file=new File(tempPicPath); //拍照后原图回存入此路径下 ...

qq_37363920的博客 1379

MOSFET导通电阻Rdson全解析:物理组成、公式推导与工程选型要点

在功率电子设计中,MOSFET作为核心开关器件,其导通电阻Rdson直接决定导通损耗与系统效率。从半导体物理角度看,Rdson并非单一固定值,而是由源极电阻、沟道电阻、累积层电阻、JFET区电阻、漂移区电阻及衬底电阻等多个分量串联而成,并随栅极驱动电压、结温以及击穿电压等级发生显著变化。理解Rdson的物理来源与数学表达,有助于工程师在低压大电流与高压小电流等不同场景中合理选型、优化驱动电压并准确估算热损耗。文章从沟道电阻公式出发,深入剖析耐压与导通电阻的物理矛盾、温度系数的影响规律,并给出数据手册参数的正

weixin_29163857的博客 199

PID不够用?试试用ADRC改造你的ArduCopter:从Simulink仿真到SITL测试全记录

本文详细介绍了如何将ADRC(自抗扰控制)算法集成到ArduPilot飞控中,以替代传统PID控制器。通过Simulink建模、参数整定和SITL仿真测试,展示了ADRC在抗扰动能力、响应速度和参数调节复杂度上的优势,特别适合无人机在强风扰动下的稳定控制。

weixin_32349093的博客 275

Android调用相机拍照并添加水印

最近项目提出新需求,要求在拍照后在图片上添加用户信息的水印,so,楼主重新整理封装了一个简单的拍照+水印的工具类,需求不同,仅供参考。文件操作及权限做了适配,支持androidN及以上版本,放心使用。 效果演示: 如何调用相机这里就不介绍了,因为小伙伴们基本都使用过,主要介绍下实现水印的方式,实现水印效果也很简单,利用paint及canvas操作bitmap在对应位置进行绘制文

c664543330的博客 1万+

【RT-DETR实战】159、改进九:知识蒸馏从YOLOv8教师模型学习

摘要: 本文探讨了知识蒸馏在RT-DETR目标检测模型中的应用挑战与实践经验。作者以YOLOv8作为教师模型,针对特征对齐、损失函数设计和训练策略等核心问题,提出了适配器模块、动态权重调整和多阶段训练等优化方案。文章重点分析了教师模型选择、特征图匹配、损失函数组合等关键环节的实战技巧,并总结了蒸馏模型部署时的注意事项。通过实验验证,作者指出知识蒸馏应关注模型"思维方式"的迁移而非简单特征复制,并强调合理评估指标和教师模型选择的重要性。最后,作者分享了技术迭代中的边际效应认知,为工业场景下的模型优化提供了实用

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 268

android系统设置默认水印颜色,Android启动系统默认相机拍照出带水印的照片

国庆刚放假完好像上班 不怎么做得下去,想了下整理下放假前做的东西在界面中按设定好的按钮启动系统默认相机/*** 启动系统相机** @param view*/public void takePhoto() {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, CASE_C...

weixin_39815600的博客 193

YOLOv12改进策略【Head】| ASFF 自适应空间特征融合模块,改进检测头Detect_ASFF

在目标检测中,处理多尺度物体是一个具有挑战性的问题。虽然特征金字塔或多级特征塔是解决多尺度问题的常用方法,但在单阶段检测器中,不同尺度特征之间的不一致性限制了其性能提升。为了解决这个问题,提出了自适应空间特征融合(ASFF)模块。

Limiiiing的博客 1174

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android 水印相机开发

水印相机是自定义相机的一种,实现方法有很多,我看了很多别人的做的很漂亮,我做的就很普通了,不过总算是实现了拍照加水印的功能。 我这边用到了SurfaceView,有人没用这个也做出来水印相机,个人觉得还是SurfaceView更方便一点(不接受反驳)。 先看看效果: 原图太大,我做了压缩,所以动图显得模糊。 第一步,我们想一进入就打开相机预览,这个怎么做呢? 相机功能由android.hardw...

lk_123456的专栏 4579

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: Android第三方框架之xListView的使用方法
下一篇: Uri详解之——Uri结构与代码提取
codepython
博客等级 码龄20年 125粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值