HarmonyOS 鸿蒙Next PixelMap怎么转Base64?(非Java)

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

HarmonyOS 鸿蒙Next PixelMap怎么转Base64?(非Java)

系统截图获取到的图片为PixelMap,拿到图片,我这边需要把该图片改成base64,也看到有人在问,但是没能被解决啊!!(arkts开发harmonyOS,不是使用Java)

6 回复
PixelMap 进行 Uint8Array 编码,然后 util.Base64Helper 再进行编码

cke_1683.png
   this.pixelMap = data;
                const imagePackerApi: image.ImagePacker = image.createImagePacker();
                let packOpts: image.PackingOption = { format: 'image/jpeg', quality: 30 };
                try {
              imagePackerApi.packing(data, packOpts).then((readBuffer)=>{
                <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> bufferArr = <span class="hljs-keyword"><span class="hljs-keyword">new</span></span> <span class="hljs-built_in"><span class="hljs-built_in">Uint8Array</span></span>(readBuffer)
                  <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> help = <span class="hljs-keyword"><span class="hljs-keyword">new</span></span> util.Base64Helper
                  <span class="hljs-keyword"><span class="hljs-keyword">var</span></span> base = help.encodeToStringSync(bufferArr)

                hilog.debug(<span class="hljs-number"><span class="hljs-number">0x0001</span></span>, <span class="hljs-string"><span class="hljs-string">"save the screenshot base:"</span></span>,base)

              });

            } <span class="hljs-keyword"><span class="hljs-keyword">catch</span></span> (err) {
              console.error(TAG, <span class="hljs-string"><span class="hljs-string">'保存文件失败,err='</span></span> + <span class="hljs-built_in"><span class="hljs-built_in">JSON</span></span>.stringify(err));
             
            }</code><button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button></pre>  <p>完整的转换方式在这,帮助正在查阅的你</p></div></div>

非常感谢,有转换出来,但是是没有 data:image/png;base64,base64,的图片头的。

自己拼接下吧!!这个转义出来是可以显示的,没有data:image/png;base64,base64, ---- 拼接到前面即可

已经完全解决了。谢谢指导。

在HarmonyOS(鸿蒙)系统中,如果你正在使用非Java语言(如Kotlin或Dart,假设是Flutter环境),将PixelMap转换为Base64字符串通常涉及几个步骤。首先,你需要将PixelMap转换为字节数据(ByteArray),这通常可以通过读取PixelMap的像素数据并编码为特定格式(如PNG或JPEG)来实现。然后,使用Base64编码库将这些字节数据转换为Base64字符串。

对于Kotlin,你可以使用Kotlin的扩展库或Android的Bitmap类(如果兼容)来辅助转换。对于Flutter,则可能需要使用Dart的dart:convert库中的base64Encode函数,但首先需要将PixelMap转换为Dart可处理的图像格式。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部