HarmonyOS 鸿蒙Next中Heic文件批量转换jpg

HarmonyOS 鸿蒙Next中Heic文件批量转换jpg 图库中只能一张一张的转,求Heic文件批量转换jpg方法


更多关于HarmonyOS 鸿蒙Next中Heic文件批量转换jpg的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

这个设置藏的确实很隐蔽,我之前也没找到,我也是问了小艺。也可以直接问小艺,打开相机设置,也可以按下面这个步骤:

更多关于HarmonyOS 鸿蒙Next中Heic文件批量转换jpg的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


如果需要经常转换,不如直接修改相机设置,默认jpg格式。

图片

鸿蒙6.1没有找到设置这个选项。,

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

在6.1系统打开相机设置,调整照片格式:
打开相机应用,在相机页面上滑拉起底部菜单栏,点击底部菜单栏中的设置选项,即可设置照片格式

在HarmonyOS Next中,可利用 @ohos.multimedia.image 模块批量转换。通过 createImageSource 解码 HEIC 文件,再用 ImagePacker 设置 JPEG 格式并编码存储。遍历文件目录,对每个 .heic 文件执行上述操作即可。注意需声明 ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA 权限。

目前鸿蒙Next图库暂不支持Heic批量转JPG,但可以自行写一个批量转换小工具。核心思路是遍历目录,用image模块解码Heic再编码为JPG。示例代码如下:

import image from '@ohos.multimedia.image';
import fs from '@ohos.file.fs';

async function convertHeicToJpg(src: string, dst: string) {
  const file = fs.openSync(src, fs.OpenMode.READ_ONLY);
  let buf = new ArrayBuffer(fs.statSync(src).size);
  fs.readSync(file.fd, buf);
  fs.closeSync(file);

  const imgSrc = image.createImageSource(buf);
  const pm = await imgSrc.createPixelMap({ editable: true });
  const packer = image.createImagePacker();
  const data = await packer.packing(pm, { format: "image/jpeg", quality: 90 });

  const out = fs.openSync(dst, fs.OpenMode.CREATE | fs.OpenMode.WRITE_ONLY);
  fs.writeSync(out.fd, data);
  fs.closeSync(out);
  pm.release(); imgSrc.release(); packer.release();
}

批量时读取文件夹,筛选.heic文件逐个转换即可。记住在module.json5申请读写媒体权限,或用文件选择器让用户指定目录,避免权限问题。这样一个简易ArkUI工具就能快速完成转换。

回到顶部