前言
最近在项目种有个电子签名功能 需要客户手写签名 然后保存本地 上传云端
//获取bitmap
Bitmap 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);
}