跳转到内容
菜单
自动
简体中文
GitHub
自动
简体中文

选择 API

先根据任务所在环境选择软件包:

需求 软件包
在 iOS、Android 或浏览器渲染 react-native-image-marker Core 2.1
在不安装 React Native 的浏览器、Vite 或 WebView 中渲染 @image-marker/web 0.1
构建 React Native 或 Web 可视化编辑工作区 react-native-image-marker-editor
不渲染,只创建、验证或迁移 Recipe JSON @image-marker/recipe
在 Node.js 服务中渲染 @image-marker/node
在终端或 CI 中渲染、检查 @image-marker/cli

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

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

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

浏览器专用应用推荐使用 @image-marker/web。它不引入 React Native peer 依赖, 同时提供 /headless/editor-adapter 和随包提供的隐形水印 Worker。

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 v2 接受现代的有序 layers 数组与嵌套 output;每张图片的 backgroundImagefilename 和可选 variables 应传给 apply()applyMany()。文字模板可以读取 {{variableName}}{{index}}{{filename}}visibleWhen 可以按条件保留图层。

applyMany() 会独立报告每一项,并保持输入顺序。默认并发为 1;Web 最多允许 4 个活动任务,iOS 和 Android 固定为 1,以控制原生内存压力。传入 AbortSignal 后会停止排队任务,并在支持时取消活动原生任务。

需要保存 Recipe 时请设置 schemaVersion: 2,保留稳定的图层 id,并持久化 recipe.toJSON()。导入已保存的 v1 文档时先运行一次 migrateWatermarkRecipe()

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

Core 2 必须使用复数数组和当前的定位属性:

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