我看到官方demo 添加水印如下
import { image } from '@kit.ImageKit'
@Entry
@Component
struct Index {
@State pixelMap: PixelMap | null = null
aboutToAppear(): void {
getContext(this).resourceManager.getMediaContent($r("app.media.startIcon")).then((data) => {
let arrayBuffer = data.buffer.slice(data.byteOffset, data.byteLength + data.byteOffset)
let imageSource: image.ImageSource = image.createImageSource(arrayBuffer);
imageSource.getImageInfo((err, value) => {
if (err) {
return;
}
let opts: image.DecodingOptions =
{ editable: true, desiredSize: { height: value.size.height, width: value.size.width } };
imageSource.createPixelMap(opts, (err,
pixelMap) => {
// 这个回调的pixelMap就是当前图片的pixelMap
let offScreenCanvas = new OffscreenCanvas(value.size.width, value.size.height)
let OffScreenContext = offScreenCanvas.getContext("2d")
OffScreenContext.drawImage(pixelMap, 0, 0, offScreenCanvas.width, offScreenCanvas.height)
OffScreenContext.fillStyle = '#30000000'
OffScreenContext.font = "50px"
OffScreenContext.fillText("水印水印水印水印水印", 20, 30)
// 获取新的PixelMap
this.pixelMap = OffScreenContext.getPixelMap(0, 0, offScreenCanvas.width, offScreenCanvas.height)
})
})
})
}
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Image(this.pixelMap).width(100).height(100)
}.width('100%').height('100%')
}
}
但是我发现我无法在图片右下角添加水印
我的思路是通过 measure.measureTextSize 去获取将要添加水印的文字大小, 但是这个方法返回的值,并不能满足我的需求.
示例参考: