讨论广场 问答详情
【求助】OpenHarmony 6.1 ActsImagePackToFileJsTest 测试失败
Eric 2026-08-11 19:02:21
191 评论 分享

ohos6.1 ActsImagePackToFileJsTest 测试失败,日志见附件,有大佬解决过该问题吗?

191 评论 分享
相关文件下载
hilog.rar
306.05 KB
下载
写回答
全部评论(3)
1 楼

日志显示: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
2026-08-17 17:26:40
引用:“看了日志,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) });
2026-08-17 17:26:40
2026-08-14 14:44:55
引用:“谢谢回复! 测试资源 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'))。
2026-08-14 14:44:55
2026-08-13 19:48:23
谢谢回复! 测试资源 test.png 图片在PC端可以正常打开,为什么缓冲区读失败,这种可能是什么原因呀?
2026-08-13 19:48:23