如果想保持hdr的解码格式,需要在packing的时候加上编码格式,以及不转buffer,否则在buffer生成pixelmap的时候,生成的pixelmap不一定是hdr格式的,导致编码出现问题。static async savePixelMap(context: Context, pm: PixelMap): Promise<string> { if (pm === null) { return ''; } const imagePackerApi: image.ImagePacker = image.createImagePacker(); const packOpts: image.PackingOption = { format: 'image/jpeg', quality: 100,desiredDynamicRange:image.PackingDynamicRange.AUTO }; try { FileUtils.packToFile(context, pm); const data: ArrayBuffer = await imagePackerApi.packing(pm, packOpts); return await FileUtils.saveFile(context, data); } catch (err) { return ''; } } async function resizePixelMap(context: Context, pm: PixelMap, sacleW: number, sacleH: number, w: number, h: number) { Logger.info(`w = ` + w + ' h=' + h) await pm.scale(sacleW, sacleH); let uri = await FileUtils.savePixelMap(context, pm); Logger.info(`uri = ${JSON.stringify(uri)}`) let paramsObj: paramsType = { picPath: uri } router.pushUrl({ url: 'pages/ResultPage', params: paramsObj }) }
如果想保持hdr的解码格式,需要在packing的时候加上编码格式,以及不转buffer,否则在buffer生成pixelmap的时候,生成的pixelmap不一定是hdr格式的,导致编码出现问题。