HarmonyOS 鸿蒙Next PixelMap.crop 通过手动输入x,y坐标剪裁时提示62980115?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next PixelMap.crop 通过手动输入x,y坐标剪裁时提示62980115?

import image from ‘@ohos.multimedia.image’;
import { fileIo, fileUri } from ‘@kit.CoreFileKit’;
import { BusinessError } from ‘@kit.BasicServicesKit’;
import { promptAction } from ‘@kit.ArkUI’;

@Component
@Preview
export struct PixelMapCrop {
@State x: number = 0;
@State y: number = 0;
private boxWidth = 200;
private boxHeight = 200;
@State src: string = ‘’;
@State sourceSrc: image.PixelMap | null = null;
context = getContext(this);
crop = () => {
if (this.sourceSrc) {
const imageInfo = this.sourceSrc;
// 将原始数据读取到buffer中
const bytes = imageInfo?.getPixelBytesNumber();
const buffer = new ArrayBuffer(bytes);
this.sourceSrc.readPixelsToBufferSync(buffer);
// 复制
const cp = image.createPixelMapSync(buffer, {
editable: true,
srcPixelFormat: imageInfo.getImageInfoSync().pixelFormat,
pixelFormat: image.PixelMapFormat.RGBA_8888,
size: imageInfo.getImageInfoSync().size
});
console.log(’----’, this.x, this.y);
cp.crop({
x: this.x,
y: this.y,
size: { width: this.boxWidth, height: this.boxHeight }
}).then(() => {
const imagePacker = image.createImagePacker();
const dir = this.context.filesDir;
const destFile = ${dir}/${new Date().getTime()}.jpg;
const dest: fileIo.File = fileIo.openSync(destFile, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);
const imagePackerOptions: image.PackingOption = {
format: “image/jpeg”, quality: 98
}
imagePacker.packToFile(cp, dest.fd, imagePackerOptions).then(() => {
this.src = fileUri.getUriFromPath(destFile);
console.log(‘dest’, destFile)
}).catch((error: BusinessError) => {
console.log(‘err’, error.code)
})
}).catch((error: BusinessError) => {
console.log(‘cp_error:’, error)
promptAction.showToast({ message: “error” })
})

}
}

build() {
NavDestination() {
Column() {
Column({ space: 10 }) {
TextInput({ text: $$this.x, placeholder: ‘x’ })
TextInput({ text: $$this.y, placeholder: ‘y’ })
Button(‘裁剪’).onClick(this.crop)
}

Column() {
Image(this.src);
// Canvas(this.canvas).width(‘100%’).height(‘100%’).onReady(() => {
// if (this.sourceSrc) {
// this.canvas.drawImage(this.sourceSrc, 0, 0);
// }
// })
}.layoutWeight(1).border({ width: 1 }).width(“100%”)
}.width(‘100%’).height(‘100%’)
}.onReady((event) => {
const pathStack = event.pathStack;
const image = pathStack.getParamByName(‘PixelMapCrop’)[0] as image.PixelMap
this.sourceSrc = image;
})
}
}

2 回复

62980115 表示图片无效参数 排查下crop的入参 

x:起始点横坐标

y:起始点纵标

size.width: 裁剪的宽度

size.height: 裁剪的高度

针对您提到的HarmonyOS鸿蒙系统中Next PixelMap.crop方法在使用手动输入的x,y坐标进行剪裁时遇到的错误代码62980115,这通常指示着参数错误或方法调用不当。

  1. 检查坐标范围:首先确认输入的x,y坐标是否在PixelMap的有效范围内。坐标值必须为非负整数,并且不超过PixelMap的宽度和高度。

  2. 验证裁剪区域:确保裁剪区域的宽度和高度也是非负整数,并且与提供的x,y坐标组合后不会超出PixelMap的边界。

  3. API调用规范:查阅最新的HarmonyOS开发文档,确认crop方法的调用格式和参数要求是否与您的代码一致。有时API更新会导致旧方法不再适用。

  4. 错误代码解读:错误代码62980115并非广泛认知的标准错误码,可能是特定于鸿蒙系统的内部错误。查阅鸿蒙开发者社区或官方文档,看是否有对此错误码的专门解释。

2025年HarmonyOS鸿蒙Next教程已发布,可以先学学https://www.itying.com/category-93-b0.html

回到顶部