Я пытаюсь создать анимированный GIF файл из array
из bitmaps
, в приложении у меня есть холст и GIF-стикер, когда пользователь нажимает на кнопку Сохранить. кнопку, я начинаю создавать array
из bitmap
, размер этого array
- это количество кадров стикера GIF, поэтому сгенерированный GIF будет содержать все кадры стикера GIF, код ниже работает нормально, но иногда я замечаю, что некоторые кадры стикера GIF потеряны или повреждены .
Захват / создание растрового изображения :
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 переход к следующему кадру.