Bitmap毛边问题

一、Bitmap转为Base64字符串

a) Bitmap按照JPEG格式转码

try {
	ByteArrayOutputStream = new ByteArrayOutputStream();
	bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
	byte[] imgByte = out.toByteArray();
	return Base64.encodeToString(imgByte, Base64.DEFAULT);
} catch (Exception e) {
	return null;
}

解决办法:使用PNG格式转码

bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);


b) Bitmap按照PNG格式转码,仍然出现毛边

原因:

       Base64加密算法flags参数为DEFAULT时,如果字符串过长(一般超过76),会自动在中间加一个换行符,字符串最后也会加一个换行符。导致和其他模块对接时结果不一致。

解决办法:flags参数改为NO_WRAP

Base64.encodeToString(imgByte, Base64.NO_WRAP);


二、裁剪图片小于规定的大小

调用系统的Crop实现裁剪:

  1.  Intent intent = new Intent("com.android.camera.action.CROP");   
  2.  intent.setDataAndType(uri, "image/*");   
  3. //下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪   
  4.  intent.putExtra("crop""true");   
  5.  // aspectX aspectY 是宽高的比例   
  6.  intent.putExtra("aspectX"1);   
  7.  intent.putExtra("aspectY"1);   
  8.  // outputX outputY 是裁剪图片宽高   
  9.  intent.putExtra("outputX"600);   
  10.  intent.putExtra("outputY"600);   
  11.  intent.putExtra("return-data"true);  

解决办法:设置下面2个参数

putExtra("scale", true); //黑边
putExtra("scaleUpIfNeeded", true); //黑边

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值