【求助】OpenHarmony 6.1 ActsImagePackToFileJsTest 测试失败

ohos6.1 ActsImagePackToFileJsTest 测试失败,日志见附件,有大佬解决过该问题吗?
您需要先 登录 才能评论/回答
全部评论(3)
日志显示:BufferSourceStream 从内存缓冲区读取图像数据时失败。缓冲区在读完 128 字节后即返回"读取失败"(buffer read fail),说明:
缓冲区中只有 128 字节数据(buffer read finish, offset:128, dataSize:128 证实)
128 字节远不足以解码任何有效的 JPEG/WebP 图像(仅够存储头信息片段)
ImageSource 无法从残缺数据中解码出图像信息 → 无法创建 PixelMap → ImagePacker 无数据可打包
2026-08-12 12:00:39
引用:“看了日志,offset:128 ,dataSize128 6 条用例全部一致,说明传给 createImageSource 的 buffer 本身就是 128 字节(不是文件读一半,是 buffer 就这么大)。PC 端 test.png 正常≠设备上 buffer 正常——问题出在测试代码读取图片那一步,大概率是读文件时写了固定 new ArrayBuffer(128) 或 slice(0, 1”
测试例hap解压如图所示,测试代码加载的test.png资源文件是不是就是hap解压出来的?解压hap得到的test.png大小确实只有128Byte
it("SUB_MULTIMEDIA_IMAGE_PACK_TO_FILE_PROMISE_IMAGE_SOURCE_0100", Level.LEVEL0, async function (done) {
await getImageSourceData("test.png")
expect(globalImagesource != undefined).assertTrue();
let writeFd = undefined;
let fpath = undefined;
[fpath, writeFd] = await getWriteFd("promise_image_source.jpg")
expect(writeFd != undefined).assertTrue();
expect(fpath != undefined).assertTrue();
let ops = { format: "image/jpeg", quality: 100 };
function checkSize(width, height) {
expect(width == picSize.pngWidth).assertTrue();
expect(height == picSize.pngHeight).assertTrue();
}
packToFilePromise(done, "SUB_MULTIMEDIA_IMAGE_PACK_TO_FILE_PROMISE_IMAGE_SOURCE_0100",
globalImagesource, writeFd, fpath, ops, checkSize)
});
引用:“谢谢回复! 测试资源 test.png 图片在PC端可以正常打开,为什么缓冲区读失败,这种可能是什么原因呀?”
看了日志,offset:128 ,dataSize128 6 条用例全部一致,说明传给 createImageSource 的 buffer 本身就是 128 字节(不是文件读一半,是 buffer 就这么大)。PC 端 test.png 正常≠设备上 buffer 正常——问题出在测试代码读取图片那一步,大概率是读文件时写了固定 new ArrayBuffer(128) 或 slice(0, 128),而不是按文件真实大小读。
建议:
1. 在测试源码读图处加 console.info('buf size = ' + buf.byteLength) 跑一次确认。
2. 改成按文件实际大小读(或直接用 resourceManager.getRawFileContent('test.png'))。