服务端传的是16进制的字符串,我先要把它转换成String,然后转成drawable,但是突然发现,每次上传后图片都变模糊了一点,
然后我就试着把一张图片反复的(16进制字符串->String->drawable->String->16进制字符串),
然后图片就慢慢的变成了马赛克,最后没有了。这是为什么啊?这些转换的代码都是百度上搜的。
你的drawable应该转成了类似jpg的有损压缩格式,而且设置的照片品质还很低,因此每次都会损失一点图片质量,直到最后变成马赛克。
你可以尝试改变转换格式为无损的,或采用最高质量的压缩模式。
直接转换估计有损伤吧!楼主你转换的代码怎么搞得
/**
* String转换drawable
*
* @param icon
* @return
*/
public Drawable byteToDrawable(String icon) {
byte[] img = null;
try {
img = Base64.decode(icon.getBytes(), Base64.DEFAULT);
}catch (Exception e){
}
Bitmap bitmap;
if (img != null) {
bitmap = BitmapFactory.decodeByteArray(img, 0, img.length);
@SuppressWarnings("deprecation")
Drawable drawable = new BitmapDrawable(bitmap);
return drawable;
}
return null;
}
这是转换的代码