2012-05-25 3 views
2

У меня проблемы с клонированием BitmapDrawable. Я попробовал ответить в this post, но он создает «мелкую» копию, и мне нужна «глубокая» копия, поэтому я могу изменить пиксели в клоне, не затрагивая оригинал.Как сделать глубокую копию BitmapDrawable?

Я также попытался это:

Bitmap bitmap = bdOriginal.getBitmap(); 
    BitmapDrawable bdClone = new BitmapDrawable(getResources(), bitmap.copy(bitmap.getConfig(), true)); 

Но это, кажется, создает неизменный клон, даже если я установить изменяемый параметр в Bitmap.copy() «истина». То есть, цветные фильтры, похоже, не изменят клон. Я делаю это неправильно? (EDIT: я использовал отладчик для подтверждения bitmap.mIsMutable = true)

Подводя итог, мне нужен клон BitmapDrawable, который может быть изменен с помощью цветовых фильтров, не затрагивая оригинал. Какие-либо предложения?

Заранее спасибо ...

+1

Попытка с растяжимым методом 'изменяемым()'. –

+0

Спасибо, но BitmapDrawable по-прежнему не влияет на цветовой фильтр. :(Я знаю, что фильтр работает, потому что он работает с оригинальным растровым изображением и мелкой копией. –

ответ

1
  1. Создать новую Bitmap одного и того же размера.
  2. Create canvas для этого нового Bitmap
  3. Нарисуйте свой первый Bitmap в этот холст.

Пример:

Bitmap copy = Bitmap.createBitmap(original.getWidth(), original.getHeight(), original.getConfig()); 
Canvas copiedCanvas = new Canvas(copy); 
copiedCanvas.drawBitmap(original, 0f, 0f, null); 
Смежные вопросы