Как проверить, завершен ли процесс создания растрового изображения - PullRequest
0 голосов
/ 21 апреля 2020

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

enter image description here

Захват / создание растрового изображения :

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

Создание растровых растровых массивов:

  for (int i = 0; i < gifSticker.getFrameCount() ; i++) {
                try {
                    TimeUnit.MILLISECONDS.sleep(gifSticker.getFrameDelay().get(i) * 8);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                bitmapArrayList.add(getFinalBitmap());

   }

Для этого я попытался снизить скорость стикера GIF, а также отрегулируйте задержку кадра каждый раз, когда новый bitmap добавляется к array, и все это для того, чтобы метод getFinalBitmap() потратил время на получение захваченного растрового изображения с холста.

Мой вопрос:

Можно ли как-нибудь узнать, было ли успешно создано bitmap, поэтому в течение l oop I c переход к следующему кадру.

...