1

C コードを使用frameして gif ファイルから取得していますが、 ffmpeglibraryを使用して正常に動作しています。次に、このメソッドを使用してav_read_frame、返された画像をこの形式 format から変換します。BGRA to ARGBlibyuv::ABGRToARGB

Java部分bitmapでは、それを透明なピクセルに入れると、ImageView白く描かれます。

 Bitmap bitmap= Bitmap.createBitmap(150, 150, Bitmap.Config.ARGB_8888);
 getGifFrame(gifFile,bitmap); //native method which get image frame from gif file.
 imageTest.setImageBitmap(backgroundBitmap);//this bitmap in debug mode I can see that it has transparent pixels, but in drawn it appears white!

返されたものをループしてbitmap pixels各ピクセルをチェックしても、透明であることがわかります!

          for (int x = 0; x < b.getWidth(); x++)
            {
                for (int y = 0; y < b.getHeight(); y++)
                {
                    int color = b.getPixel(x, y);
                    if (color == Color.WHITE)//This condition never occurred 
                    {
                        b.setPixel(x, y, Color.TRANSPARENT);
                    }
                }
            }

何も起こらず、まだ白いままです。次に、すべての透明ピクセルを TRANSPARENT に変換しました!! 何を推測しますか、それは働いています!

else if (color == Color.TRANSPARENT)
{
  b.setPixel(x, y, Color.TRANSPARENT);
}

なぜそれが起こるのか理解できません。どんな助けでも大歓迎です。

編集1: ビットマップからすべてのピクセルを取得し、何もせずに再度設定しましたが、それも機能しました!?

  bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
  bitmap.setPixels(pixels, 0, width, 0, 0, width,height);
4

0 に答える 0