Этот вопрос был изменен в соответствии с прогрессом, для будущего использованияКак сохранить изображение после анимации?
У меня есть изображение в ImageView
. Там находится . Вращайте кнопку рядом с ней. Это то, что он делает:
imageView.animate().rotation(imageView.getRotation()+45);
А потом сохранить изображение после изменения:
Bitmap bm = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
Но когда я извлечь изображение после изменений, старое изображение показывает вверх (повёрнутый):
rotatedImageView.setImageBitmap(bm);
Как получить новое изображение как Bitmap
после анимации?
EDIT:
После ответа @Droid Криса, это то, что я получаю:
Я установил черный фон, чтобы вы лучше понять. В конце концов, это будет прозрачно
До:
После:
НАБЛЮДЕНИЯ:
ответ @Droid Криса работает, когда я повернуть изображение по кратные 90. Но кратные 45 например проблематичны ...
мне нужно, чтобы это было 45, хотя
РЕШЕНИЕ:
Так что я использовал функцию @Droid Криса, но почему-то его была понижающая дискретизация моего изображения. Поэтому мне нужно было установить android:scaleType="center"
в xml для ImageView
. Это решило понижающую дискретизацию.
Кроме того, чтобы сохранить анимации перехода, я должен был сделать:
imageView.animate().rotation(imageView.getRotation()+45);
на каждой операции вращения, и следующий только один раз, когда я хочу, чтобы сохранить его:
Bitmap oldBitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap().copy(((BitmapDrawable)imageView.getDrawable()).getBitmap().getConfig(), true);
Bitmap bitmapAfterRotation = getRotatedBitmap(oldBitmap,imageView.getRotation());
Кроме того, в getRotatedBitmap()
, я написал mat.setRotate(angle);
, а не mat.postRotate(angle);
Теперь он работает должным образом.
пожалуйста, проверьте мой ответ –
Постараюсь это скоро ... –