3

Bitmap.copy関数に問題があります。このコードは問題なく機能しますが、

Bitmap tempBM = Bitmap.createScaledBitmap(sourceBitmap, sourceBitmap.getWidth(), sourceBitmap.getHeight(), false);

//Ensure that the bitmap is mutable and not copied from the original in the case where no scaling is required
m_bwBitmap = tempBM.copy(tempBM.getConfig(), true);
if (tempBM!=sourceBitmap)
{
    tempBM.recycle();
}

しかし、これはそうではありません...

m_bwBitmap = sourceBitmap.copy(sourceBitmap.getConfig(), true);

sourceBitmapは不変として開始し、m_bwBitmapを可変にする必要があります。

それ自体はクラッシュしませんが、Android関数のどこかで問題が発生したかのようにデバッガーを壊します。その後、アプリケーションがクラッシュします。トップコードに置き換えると、すべて正常に動作します。

ただし、JellyBeanからクラッシュレポートを取得し始め、tempBM.copyが含まれている行にnullポインタ例外をスローしました。だから、私はこれを整理する必要がありますが、現在、トップコードがまったく機能する唯一のソースです。Android4.0デバイスでテストしています。

何か案は?

4

1 に答える 1

1

さて、私はこれに答えたと思います(とにかく少なくとも途中で)。

Bitmap.Config と関係があります。行を次のように変更すると

m_bwBitmap = sourceBitmap.copy(Bitmap.Config.ARGB_8888, true);

その後、正常に動作します。

元のソース ビットマップは、次のような行に由来することに注意してください...

Bitmap sourceBitmap = BitmapFactory.decodeFile(pictureFile);

pictureFile は GIF です。

ただし、decodeFile が一見無効な構成で何かを生成する理由はよくわかりません。sourceBitmap の構成を確認すると、null が返されます ?!?

于 2012-11-06T23:11:38.290 に答える