android - 如何 : Parcel a bitmap in Android

标签 android bitmap parcelable parcel

我有一个序列化类,我想向其添加位图,但位图不支持序列化。

相反,我想我会改用包裹,但无法让它工作。

下面是一些使用局部变量的测试代码:

    Parcel parcel;
    Bitmap sourceBitmap;
    Bitmap destinationBitmap;
    parcel = Parcel.obtain();

    sourceBitmap = Bitmap.createBitmap(200, 400, Config.ARGB_8888);

    sourceBitmap.writeToParcel(parcel, 0);

    destinationBitmap = Bitmap.CREATOR.createFromParcel(parcel);

我在上面的最后一行收到以下错误:

09-06 21:18:20.463: DEBUG/skia(17716): Bitmap_createFromParcel unknown config: 0
09-06 21:18:20.473: DEBUG/AndroidRuntime(17716): Shutting down VM
09-06 21:18:20.483: WARN/dalvikvm(17716): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
09-06 21:18:20.493: ERROR/AndroidRuntime(17716): Uncaught handler: thread main exiting due to uncaught exception
09-06 21:18:20.513: ERROR/AndroidRuntime(17716): java.lang.RuntimeException: Failed to unparcel Bitmap
09-06 21:18:20.513: ERROR/AndroidRuntime(17716):     at android.graphics.Bitmap$1.createFromParcel(Bitmap.java:899)
09-06 21:18:20.513: ERROR/AndroidRuntime(17716):     at android.graphics.Bitmap$1.createFromParcel(Bitmap.java:903)

最佳答案

你必须重置你的包裹:

sourceBitmap.writeToParcel(parcel, 0);
parcel.setDataPosition(0);
destinationBitmap = Bitmap.CREATOR.createFromParcel(parcel);

关于android - 如何 : Parcel a bitmap in Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7326365/

相关文章:

android - BitmapFactory 的 decodeByteArray 和 decodeStream 返回 null

Android Parcelable 与 SQLite

android - 如何在 Android 中将对象传递给新的 Intent

Android 在 SQLite 中存储一个 Parcelable 对象

java - 需要更改 android studio 数据库中的 SQL 查询以返回多个结果

java - 当我使用 new Thread().interrupt(); 时,线程真的停止了吗?

java - Android 加密/解密 sqlite 数据库 100% 安全

java - Android:在编辑文本中创建项目符号列表

java - 为什么 .setImageBitmap() 不将图像分配给 ImageView 对象?

java - TensorFlow Lite 的 Float32 输出值如何表示图像?