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没有找到设置这个选项。,
在6.1系统打开相机设置,调整照片格式:
打开相机应用,在相机页面上滑拉起底部菜单栏,点击底部菜单栏中的设置选项,即可设置照片格式。
目前鸿蒙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工具就能快速完成转换。


