Генерация GIF-файла из массива растровых изображений - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь сгенерировать файл GIF из array из bitmaps, приведенный ниже код работает нормально, но иногда (в зависимости от количества кадров в GIF и от того, сколько стикеров GIF выходит на холст) захваченные bitmap будут повреждены, как показано ниже

только наклейка GIF:

image

После добавления фона и захвата всего холста ( с GIF-стикер )

image

Вот мой код, я попытался замедлить GIF-стикер, чтобы процесс создания bitmap занял время до конца sh, но это не работает:

   for (int i = 0; i < getBaseGIF().getFrameCount(); i++) {
            try {
                TimeUnit.MILLISECONDS.sleep(getBaseGIF().getDelay().get(i) * 8);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
                bitmapArrayList.add(getFinalBitmap());
                publishProgress(0, (int) (((i + 1) / (float) getBaseGIF().getFrameCount()) * 100));
        }

Получение растрового изображения:

public Bitmap getFinalBitmap()  {
    handlingSticker = null;
    Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    this.draw(canvas);
    return bitmap;
}
...