低代码平台开发水印相机
水印相机APP是一个利用智能手机的摄像头为拍摄的照片添加本地时间的应用。该项目主要包括以下部分:1. 拍照功能:使用智能手机的摄像头拍摄照片。APP提供拍照界面,用户可以实时预览拍摄效果。2. 保存:用户可以将带有水印的照片保存到手机相册。总之,水印相机APP项目可以帮助用户为照片添加本地时间水印。
项目介绍
水印相机APP是一个利用智能手机的摄像头为拍摄的照片添加本地时间、位置信息的应用。
主要功能包括:
- 拍照功能:使用智能手机的摄像头拍摄照片。APP提供拍照界面,用户可以实时预览拍摄效果。
- 保存:用户可以将带有水印的照片保存到手机相册。
总之,水印相机APP项目可以帮助用户为照片添加本地时间、位置信息水印。
平台支持
-
Android
AiFlutter市场链接:水印相机App
水印相机源码下载:源码下载
平台实现步骤
一、注册登录
打开 低代码平台登录网页 ,使用微信快捷登录或者扫描二维码登录。
二、创建项目
1. 点击【新增项目】>【手动添加】,在平台内部创建项目
2. 在跳出的弹窗中输入项目名称、项目描述,建议结合项目功能描述命名,便于检索
3. 输入完成后点击确定

三、页面设计
效果图

实现流程
1. 点击已经创建好的项目进入到操作界面,默认会存在一个HomePage页面,操作界面相关详情可查看教程 操作界面, 在【
页面管理】中单击HomePage页面,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 名称 | 内容 |
|---|---|
| 页面描述 |
整个页面的布局可以是垂直分区的 1. 顶部是控制区,用来控制闪光灯的开关,前后摄像头的切换 2. 中间是拍摄区,实时显示图像 3. 底部是捕获区,用来捕获当前图像 |
| 功能详情 |
1. 在页面初始化时,获取手机的摄像头对象和位置信息,启动定时器更新时间变量 2. 开启或关闭闪光灯 3. 前后摄像头切换 4. 捕获图片,通过点击按钮实时捕获带有水印的图片 |
| 背景颜色 | #FF000000 |

2. 在【
页面管理】中单击HomePage页面,在右侧的属性编辑器中添加页面变量
需要定义的变量如下
| 变量名称 | 变量类型 | 是否为数组 | 默认值 | 变量描述 |
|---|---|---|---|---|
| _takeStatus | Var | 否 | 拍照状态 | |
| _isFrontCamera | Bool | 否 | 是否为前摄像头 | |
| _isTouchOn | Bool | 否 | 是否开启闪光灯 | |
| time | String | 否 | 水印时间 | |
| timer | Var | 否 | 定时器,实时保持最新的本地时间 | |
| lat | Double | 否 | 纬度 | |
| lon | Double | 否 | 经度 | |
| placeStr | String | 否 | 位置信息 |

操作成功如下

3. 添加页面初始化动作,在右侧的属性编辑器中点击【动作】> 【打开】
在操作流程编辑器中,页面初始化 事件下点击+号添加事件,再点击+号添加动作,动作按顺序依次添加如下
(1)动作类型 --【定位服务】,经度值绑定--【lon】,纬度值绑定 --【lat】,具体位置绑定 --【placeStr】
(2)动作类型 --【自定义代码块】,添加customCode1自定义代码块并选择
customCode1内容如下
void function(){
timer?.cancel();
timer?.cancel();
DateFormat df = DateFormat('yyyy-MM-dd HH:mm:ss');
timer = Timer.periodic(Duration(seconds: 1), (timer) {
if (mounted) {
setState(() {
time = df.format(DateTime.now());
});
}
});
}
4. 页面内容设计
(1)从【
小部件面板】> 【常用元素】中选择【容器小部件】拖入到页面编辑窗口内的上下布局中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 宽 | 无限大 |
| 高 | 700 |
| 背景颜色 | #00C8C8C8 |
(2)从【
小部件面板】> 【常用元素】中选择【上下布局小部件】拖入到页面编辑窗口内的【容器小部件】中
(3)从【
小部件面板】> 【基本元素】中选择【条件生成器小部件】拖入到页面编辑窗口内的【上下布局小部件】中,然后在右侧的属性编辑器中绑定变量_takeStatus
(4)当 _takeStatus = TakeStatus.confirm,从【
小部件面板】> 【常用元素】中选择【容器小部件】拖入到页面编辑窗口内的【条件生成器小部件】中,然后在右侧的属性编辑器中绑定变量
| 属性名称 | 属性内容 |
|---|---|
| 宽 | 40 |
| 高 | 40 |
| 背景颜色 | #00C8C8C8 |
(5)当 _takeStatus != TakeStatus.confirm,从【
小部件面板】> 【基本元素】中选择【左右布局小部件】拖入到页面编辑窗口内的【上下布局】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 主轴对齐 | 从左往右第三个 |
(6)从【
小部件面板】> 【布局元素】中选择【条件生成器小部件】拖入到【左右布局小部件】中,然后在右侧的属性编辑器中绑定变量_isTouchOn
(7)当 _isTouchOn = true,从【
小部件面板】> 【基本元素】中选择【按钮小部件】拖入到页面编辑窗口内的【条件生成器小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 宽 | 40 |
| 高 | 40 |
| 背景颜色 | #00C8C8C8 |
| 阴影大小 | 0 |
按钮动作面板中打开动作流程编辑器,单击 事件下点击+号添加事件,再点击+号添加动作,信息如下
-
动作类型 --【硬件动作】,硬件类型 --【相机】,相机操作类型 --【拍照】,拍照操作 --【关闭闪光灯】
(8)从【
小部件面板】> 【常用元素】中选择【图标小部件】拖入到【按钮布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 图标 | flash |
| 大小 | 24 |
| 颜色 | #FFFFFFFF |
(9)当 _isTouchOn = false,从【
小部件面板】> 【基本元素】中选择【按钮小部件】拖入到页面编辑窗口内的【条件生成器小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 宽 | 40 |
| 高 | 40 |
| 背景颜色 | #00C8C8C8 |
| 阴影大小 | 0 |
按钮动作面板中打开动作流程编辑器,单击 事件下点击+号添加事件,再点击+号添加动作,信息如下
-
动作类型 --【硬件动作】,硬件类型 --【相机】,相机操作类型 --【拍照】,拍照操作 --【打开闪光灯】
(10)从【
小部件面板】> 【常用元素】中选择【图标小部件】拖入到【按钮布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 图标 | flash |
| 大小 | 24 |
| 颜色 | #FFFFFFFF |
(11)从【
小部件面板】> 【布局元素】中选择【条件生成器小部件】拖入到【左右布局小部件】中,然后在右侧的属性编辑器中绑定变量_isFrontCamera
(12)当 _isFrontCamera = true,从【
小部件面板】> 【基本元素】中选择【按钮小部件】拖入到页面编辑窗口内的【条件生成器小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 宽 | 40 |
| 高 | 40 |
| 背景颜色 | #00C8C8C8 |
| 阴影大小 | 0 |
按钮动作面板中打开动作流程编辑器,单击 事件下点击+号添加事件,再点击+号添加动作,信息如下
-
动作类型 --【硬件动作】,硬件类型 --【相机】,相机操作类型 --【拍照】,拍照操作 --【打开后置相机】
(13)从【
小部件面板】> 【常用元素】中选择【图标小部件】拖入到【按钮布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 图标 | flip |
| 大小 | 24 |
| 颜色 | #FFFFFFFF |
(14)当 _isFrontCamera = false,从【
小部件面板】> 【基本元素】中选择【按钮小部件】拖入到页面编辑窗口内的【条件生成器小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 宽 | 40 |
| 高 | 40 |
| 背景颜色 | #00C8C8C8 |
| 阴影大小 | 0 |
按钮动作面板中打开动作流程编辑器,单击 事件下点击+号添加事件,再点击+号添加动作,信息如下
-
动作类型 --【硬件动作】,硬件类型 --【相机】,相机操作类型 --【拍照】,拍照操作 --【打开前置相机】
(15)从【
小部件面板】> 【常用元素】中选择【图标小部件】拖入到【按钮布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 图标 | flip |
| 大小 | 24 |
| 颜色 | #FFFFFFFF |
(16)从【
小部件面板】> 【交互行为】中选择【相机区域】拖入到【上下布局】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 宽高比 | 1 |
| 像素比 | 2 |
| 水印位置 | 左 15 下 20 |
(17)从【
小部件面板】> 【常用元素】中选择【文本小部件】拖入到【相机区域】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 文本内容 | ${time} |
(17)从【
小部件面板】> 【常用元素】中选择【文本小部件】拖入到【相机区域】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 文本内容 | ${placeStr} |
(17)从【
小部件面板】> 【常用元素】中选择【文本小部件】拖入到【相机区域】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 文本内容 | ${lat}°N,${lon}°E |
(18)从【
小部件面板】> 【基本元素】中选择【条件生成器小部件】拖入到页面编辑窗口内的【上下布局小部件】中,然后在右侧的属性编辑器中绑定变量_takeStatus
(19)当 _takeStatus != TakeStatus.confirm,从【
小部件面板】> 【基本元素】中选择【按钮小部件】拖入到页面编辑窗口内的【条件生成器小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 主轴对齐 | 从左往右第三个 |
| 宽 | 80 |
| 高 | 80 |
| 背景颜色 | #00C8C8C8 |
| 阴影大小 | 0 |
| 圆角 | 120 |
| 边框 | 样式 一 宽度 4 颜色 #FFFFFFFF |
按钮动作面板中打开动作流程编辑器,单击 事件下点击+号添加事件,再点击+号添加动作,信息如下
-
动作类型 --【硬件动作】,硬件类型 --【相机】,相机操作类型 --【拍照】,拍照操作 --【拍照】
(20)当 _takeStatus = TakeStatus.confirm,从【
小部件面板】> 【常用元素】中选择【左右布局小部件】拖入到【条件生成器小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 主轴对齐 | 从左往右第5个 |
(21)从【
小部件面板】> 【基本元素】中选择【按钮小部件】拖入到页面编辑窗口内的【左右布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 宽 | 80 |
| 高 | 80 |
| 背景颜色 | #00C8C8C8 |
| 阴影大小 | 0 |
按钮动作面板中打开动作流程编辑器,单击 事件下点击+号添加事件,再点击+号添加动作,信息如下
-
动作类型 --【硬件动作】,硬件类型 --【相机】,相机操作类型 --【拍照】,拍照操作 --【取消拍照】
(22)从【
小部件面板】> 【常用元素】中选择【图标小部件】拖入到【按钮布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 图标 | close |
| 大小 | 34 |
| 颜色 | #FFFFFFFF |
(23)从【
小部件面板】> 【基本元素】中选择【按钮小部件】拖入到页面编辑窗口内的【左右布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 宽 | 80 |
| 高 | 80 |
| 背景颜色 | #00C8C8C8 |
| 阴影大小 | 0 |
按钮动作面板中打开动作流程编辑器,单击 事件下点击+号添加事件,再点击+号添加动作,信息如下
-
动作类型 --【硬件动作】,硬件类型 --【相机】,相机操作类型 --【拍照】,拍照操作 --【确认拍照】
(24)从【
小部件面板】> 【常用元素】中选择【图标小部件】拖入到【按钮布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:
| 属性名称 | 属性内容 |
|---|---|
| 图标 | right |
| 大小 | 34 |
| 颜色 | #FFFFFFFF |
更多推荐

所有评论(0)