Flutter相机拍照给图片加水印

之前写了一个flutter相机的开源库,现在给开源库增加了一个拍照增加水印的方法
开源库基本使用方法在上一篇文章:https://www.jianshu.com/p/7a76ece2064a

下边是加水印的方法,需要在CameraPreviewWidget创建的时候传入一个WatermarkOption,以此来确定水印的样式和位置
如下图红圈所示


1111.png

WatermarkOption的构造参数说明

class WatermarkOption {
  final Widget watermarkWidget;

  final WatermarkPositionData positionData;

  WatermarkOption({required this.watermarkWidget, required this.positionData});
}

1.watermarkWidget就是水印本身的widget,不需要太多说明

2.WatermarkPositionData用来确认水印的位置, 它包含2个参数,需要特殊说明一下

class WatermarkPositionData {
  final WatermarkPosition position;
  final double x;
  final double y;

  WatermarkPositionData({required this.position, this.x = 0, this.y = 0});
}

水印位置可以设置为左上,右上,中心,左下和右下五个位置。

enum WatermarkPosition {
  topLeft,
  topRight,
  center,
  bottomLeft,
  bottomRight;
}

重要的事情说三遍~ 重要的事情说三遍~ 重要的事情说三遍~

当设置水印位置是topLeft时,
x参数代表marginLeft. y参数代表marginTop.

当设置水印位置是topRight时,
x参数代表marginRight. y参数代表marginTop.

当设置水印位置是bottomLeft时,
x参数代表marginLeft. y参数代表marginBottom.

当设置水印位置是bottomRight时,
x参数代表marginRight. y参数代表marginBottom.

当设置水印是center时,
x,y参数设置之后没有效果

最后要调用Controller的带水印拍照方法, 注意方法返回的数据类型是'dart:ui'中的image类型

final image = await _controller.takePictureWithWatermark();

如果预览时加了水印,但是拍照后的照片不像待水印,则还是调用原拍照方法

final XFile? image = await _controller.takePicture();

最后是GitHub地址:https://github.com/cgztzero/FlutterCameraX

欢迎各位多多交流,多多提bug和需求~~

寒冬中抱团取暖,如果北京有合适的flutter或者Android岗位麻烦各位同学可以帮忙推荐~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容