前言
最近在项目种有个电子签名功能 需要客户手写签名 然后保存本地 上传云端
//获取bitmapBitmap bitmapFromView = mSignatureView.getBitmapFromView();BitmapUtil.saveImageToGallery(this, bitmapFromView);
压缩为JPEG格式
saveImageToGallery 方法我做了修改 之前用的Bitmap.CompressFormat.JPEG
压缩为WEBP无损格式
核心修改内容就是修改bitmap的压缩图像的格式Bitmap.CompressFormat.WEBP_LOSSLESS
查看源码可以看到CompressFormat 枚举类
public enum CompressFormat {/*** 压缩为JPEG格式* 压缩到最小尺寸*/JPEG (0),/***压缩为PNG格式。*/PNG (1),/***压缩为WEBP格式。*/WEBP (2),/***压缩为WEBP有损格式*/WEBP_LOSSY (3),/***压缩为WEBP无损格式。*/WEBP_LOSSLESS (4);CompressFormat(int nativeInt) {this.nativeInt = nativeInt;}final int nativeInt;}
/*** 保存图片到相册** @param context 应用程序上下文* @param bmp 需要保存的 bitmap*/public static void saveImageToGallery(Context context, Bitmap bmp) {File appDir = new File(Environment.getExternalStorageDirectory(), "Pictures");if (!appDir.exists()) {appDir.mkdirs();}String fileName = "photo_" + System.currentTimeMillis() + ".png";File file = new File(appDir, fileName);try {FileOutputStream fos = new FileOutputStream(file);bmp.compress(Bitmap.CompressFormat.WEBP_LOSSLESS, 100, fos);fos.flush();fos.close();} catch (Exception e) {e.printStackTrace();}MediaScannerConnection.scanFile(context, new String[]{file.toString()}, null, null);}