我在MySQL数据库中保存图像的byteArray,然后从数据库中检索,然后将字符串转换为byteArray,然后将byteArray转换为Bitmap。但Bitmap是Null我已经尝试了很多代码但仍然是NULL。 保存图像
private String imageviewtobyte(ImageView view){
Bitmap bitmap=((BitmapDrawable) view.getDrawable()).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byteArray = stream.toByteArray();
ConvertImage = Base64.encodeToString(byteArray, Base64.DEFAULT);
return ConvertImage;
}
获取图片
imgData=result;
byte[] byteArray = Base64.decode(result, Base64.DEFAULT);
Bitmap bMap = null;
bMap = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
testimg.setImageBitmap(bMap);
寻找专家通过解决方案获得准确的错误。
答案 0 :(得分:0)
//check result object it is null or not
if(result != null){
imgData = result;
Bitmap bitmap = StringToBitMap(imgData);
if(bitmap != null){
testimg.setImageBitmap(bitmap);
}
}
/**
* @param encodedString
* @return bitmap (from given string)
*/
public static Bitmap StringToBitMap(String encodedString){
try{
byte [] encodeByte=Base64.decode(encodedString,Base64.DEFAULT);
Bitmap bitmap= BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
return bitmap;
}catch(Exception e){
e.getMessage();
return null;
}
}
答案 1 :(得分:0)
Base64String对大位图效果不佳。因此,首先必须在将位图转换为base64String之前减小位图的大小。我附加了一个用于减小位图大小的代码。 您可以在此代码中使用maxWidth = 960.0和maxheight = 1280.0。
public Bitmap GetBitmap(Bitmap finalimage) {
int actualHeight = finalimage.getHeight();
int actualWidth = finalimage.getWidth();
float imgRatio = actualWidth / actualHeight;
float maxRatio = maxWidth / maxHeight;
if (actualHeight > maxHeight || actualWidth > maxWidth) {
if (imgRatio < maxRatio) {
imgRatio = maxHeight / actualHeight;
actualWidth = (int) (imgRatio * actualWidth);
actualHeight = (int) maxHeight;
} else if (imgRatio > maxRatio) {
imgRatio = maxWidth / actualWidth;
actualHeight = (int) (imgRatio * actualHeight);
actualWidth = (int) maxWidth;
} else {
actualHeight = (int) maxHeight;
actualWidth = (int) maxWidth;
}
}
finalimage = Bitmap.createScaledBitmap(finalimage, actualWidth, actualHeight, false);
return finalimage;
}