1

所以,我有一个要保存和加载的位图图像。保存时,我首先将其转换为 byte[] 值,然后使用 save(); 保存它。当我尝试通过检查它的字符串值(以检查是否为空)来检查它是否有效时,我得到如下信息:“[B@16166c9a” 然后,我将它转回位图值,但在这样做之后,位图值仍然为空。

这是我用来保存的代码:

    public void saveImage(){
    imageToSave = Utilities.getBytes(backGround);
}

这是我用来加载的代码:

    public void updateImage(){
    backGround = Utilities.getImage(imageToSave);
}

这是实用程序类:

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import java.io.ByteArrayOutputStream;

public class Utilities {

public static byte[] getBytes(Bitmap bitmap)
{
    ByteArrayOutputStream stream=new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG,100, stream);
    return stream.toByteArray();
}
public static Bitmap getImage(byte[] image)
{
    return BitmapFactory.decodeByteArray(image, 0, image.length);
}

}

其余代码可在此处获得:

https://github.com/smholsen/BigDayCountdown/tree/master/app/src/main/java/com/simonm/bigdaycountdown

很抱歉代码混乱和评论不好。

我非常感谢任何帮助!:)

4

1 回答 1

0

这是一个对我很有效的课程。

public class ImageUtil {

public static byte[] GetByteFromBitmap(Bitmap bmp)
{
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
    return stream.toByteArray();
}

public static Bitmap convertByteArrayToBitmap(byte[] byteArrayToBeCOnvertedIntoBitMap)
{
    Bitmap bitMapImage = BitmapFactory.decodeByteArray(
            byteArrayToBeCOnvertedIntoBitMap, 0,
            byteArrayToBeCOnvertedIntoBitMap.length);
    return bitMapImage;
}}
于 2016-12-20T19:09:33.833 回答