2014-02-13 7 views
0

У меня есть два растровых изображения, а именно bm1 и bm2, и я хотел бы создать (как можно быстрее) еще одно растровое изображение, которое представляет собой затухающий микс между bm1 и bm2, где bm1 взвешен с weight и bm2 с 1-weight.лучший способ исчезнуть между двумя растровыми изображениями в android

Моя текущая реализация выглядит следующим образом:

private Bitmap Fade(Bitmap bm1, Bitmap bm2, double weight) 
{ 
    int width = bm1.getWidth(); 
    int height = bm1.getHeight(); 

    if (width != bm2.getWidth() || height != bm2.getHeight()) 
     return null; 

    Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 

    for (int y = 0; y < height; y++) 
     for (int x = 0; x < width; x++) 
     { 
      int pix_s = bm1.getPixel(x, y); 
      int pix_d = bm2.getPixel(x, y); 

      int r_s = (pix_s >> 16) & 0xFF; 
      int g_s = (pix_s >> 8) & 0xFF; 
      int b_s = pix_s & 0xFF; 

      int r_d = (pix_d >> 16) & 0xFF; 
      int g_d = (pix_d >> 8) & 0xFF; 
      int b_d = pix_d & 0xFF; 

      int r = (int)((1-weight) * r_s + weight * r_d); 
      int g = (int)((1-weight) * g_s + weight * g_d); 
      int b = (int)((1-weight) * b_s + weight * b_d); 
      int pix = 0xff000000 | (r << 16) | (g << 8) | b; 
      bm.setPixel(x, y, pix); 
     } 
    return bm; 
} 

Как вы можете видеть, он просто устанавливает компоненты RGB каждого пикселя формируемого изображения с помощью интерполяции между соответствующими компонентами RGB пикселей в ВМ1 и BM2 ,

Однако эта функция работает очень медленно, поскольку она сканирует все пиксели двух входных растровых изображений.
Есть ли более эффективный способ сделать то же самое?
Например, каким-то образом воздействуя на атрибуты прозрачности?

+0

Вы пытаетесь сделать это, чтобы показать его в виде изображения или для других целей? –

+0

Для других целей. Я _do_not_ хочу показать сгенерированное растровое изображение. – user2923045

+0

Что вы думаете об игре с альфой и накладываете их на холст? –

ответ

1

Here показывает, как изменить непрозрачность вашего растрового изображения, он изменяет альфа-канал цвета RGB. и Here он показывает вам, как наложить на холст две растровые изображения

Смежные вопросы