跳转到内容
菜单
自动
简体中文
v1 处于长期维护状态,将继续接收兼容性、安全和严重错误修复。查看 v2 当前版本

选择 API

三个公开方法共用相同的输出选项。请根据图层类型进行选择:

方法 适用场景 图层顺序
Marker.markText 一个或多个文本水印 文本数组顺序
Marker.markImage 一个或多个图像水印 图像数组顺序
Marker.mark 同时包含文本和图像水印 严格按照 watermarks 数组顺序
Marker.createRecipe 将同一组有序图层用于一张或多张图片 严格按照 watermarks 数组顺序

markTextmarkImage 仍受支持。当一次渲染需要同时包含文本和图像图层,或不同类型图层之间的顺序很重要时,请使用 mark

import Marker, { ImageFormat, Position } from 'react-native-image-marker';
const result = await Marker.markText({
backgroundImage: { src: require('./background.jpg') },
watermarkTexts: [
{
text: 'PRIVATE',
position: { position: Position.center },
style: {
color: '#FFFFFF99',
fontSize: 42,
bold: true,
rotate: -18,
},
},
],
saveFormat: ImageFormat.png,
});

当水印结构保持不变、只有底图或显示内容发生变化时,适合使用 createRecipe。Recipe 只接受现代的有序 watermarks 数组;每张图片的 backgroundImagefilename 和可选 variables 应传给 apply()applyMany()。文字模板可以读取 {{variableName}}{{index}}{{filename}}visibleWhen 可以按条件保留图层。

applyMany() 会独立报告每一项,并保持输入顺序。默认并发为 1;Web 最多允许 4 个活动任务,iOS 和 Android 固定为 1,以控制原生内存压力。传入 AbortSignal 后会停止派发新任务,但不会宣称能够中断已经开始的渲染。

需要保存 Recipe 时请设置 schemaVersion: 1,并持久化 recipe.toJSON(),不要保存内部运行时状态。

图层按照数组顺序渲染。后面的图层会绘制在前面的图层之上。使用 Marker.mark 时这一点尤为重要,因为文本和图像图层共用同一个数组。

请优先使用复数形式的数组和当前的定位属性:

新代码中避免使用 改用
文本上的 positionOptions position
watermarkImage watermarkImages
watermarkPositions 每个图像图层上的 position
为混合内容分别调用方法 一次调用 Marker.mark