在鸿蒙开发中,可以使用鸿蒙提供的BitmapFactory、ByteArrayOutputStream和Bitmap等类来实现图片的压缩和转换为byte数组进行存储。以下是一个示例代码:import ohos.media.image.ImageSource; import ohos.media.image.PixelMap; import ohos.media.image.common.PropertyKey; import ohos.media.image.common.Size; import ohos.media.image.common.Rect; import ohos.media.image.common.SourceData; import java.io.ByteArrayOutputStream; public class ImageUtils { /** * 将图片进行压缩,并转换为byte数组 * * @param filePath 图片文件路径 * @param quality 压缩质量,取值范围为0-100 * @return 压缩后的byte数组 */ public static byte[] compressImageToByteArray(String filePath, int quality) { // 创建ImageSource对象 ImageSource imageSource = ImageSource.create(filePath, null); // 获取图片的基本信息 Size imageSize = imageSource.getImageInfo().getSize(); Rect imageRect = new Rect(0, 0, imageSize.width, imageSize.height); // 创建PixelMap对象 PixelMap.PixelFormat pixelFormat = PixelMap.PixelFormat.ARGB_8888; PixelMap pixelMap = imageSource.createPixelmap(new Rect(imageRect), pixelFormat); // 创建ByteArrayOutputStream对象 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // 将PixelMap对象压缩为JPEG格式,并存入ByteArrayOutputStream pixelMap.compressToStream(quality, byteArrayOutputStream); // 获取压缩后的byte数组 byte[] byteArray = byteArrayOutputStream.toByteArray(); // 关闭资源 byteArrayOutputStream.close(); pixelMap.release(); imageSource.release(); return byteArray; } }在上述示例中,首先创建ImageSource对象,并利用其获取图片的基本信息。然后创建PixelMap对象,并将其压缩为JPEG格式,存入ByteArrayOutputStream。最后通过调用ByteArrayOutputStream的toByteArray()方法获取压缩后的byte数组。本文参与了思否 HarmonyOS 技术问答马拉松,欢迎正在阅读的你也加入。
在鸿蒙开发中,可以使用鸿蒙提供的BitmapFactory、ByteArrayOutputStream和Bitmap等类来实现图片的压缩和转换为byte数组进行存储。以下是一个示例代码:
在上述示例中,首先创建ImageSource对象,并利用其获取图片的基本信息。然后创建PixelMap对象,并将其压缩为JPEG格式,存入ByteArrayOutputStream。最后通过调用ByteArrayOutputStream的toByteArray()方法获取压缩后的byte数组。