1

Пожалуйста, помогите мне выполнить эффект изображения на данные растрового изображения.Как применить эффект фотографии в растровом изображении в android

Я ищу следующий код для применения эффекта фотографии. но я не знаю, что именно значение должно пройти для эффекта.

Код ..

public Bitmap createEffect(Bitmap src, int depth, double red, double green, double blue) { 
    // image size 
    int width = src.getWidth(); 
    int height = src.getHeight(); 
    // create output bitmap 
    Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); 
    // constant grayscale 
    final double GS_RED = 0.3; 
    final double GS_GREEN = 0.59; 
    final double GS_BLUE = 0.11; 
    // color information 
    int A, R, G, B; 
    int pixel; 

    // scan through all pixels 
    for(int x = 0; x < width; ++x) { 
     for(int y = 0; y < height; ++y) { 
      // get pixel color 
      pixel = src.getPixel(x, y); 
      // get color on each channel 
      A = Color.alpha(pixel); 
      R = Color.red(pixel); 
      G = Color.green(pixel); 
      B = Color.blue(pixel); 
      // apply grayscale sample 
      B = G = R = (int)(GS_RED * R + GS_GREEN * G + GS_BLUE * B); 

      // apply intensity level for sepid-toning on each channel 
      R += (depth * red); 
      if(R > 255) { R = 255; } 

      G += (depth * green); 
      if(G > 255) { G = 255; } 

      B += (depth * blue); 
      if(B > 255) { B = 255; } 

      // set new pixel color to output image 
      bmOut.setPixel(x, y, Color.argb(A, R, G, B)); 
     } 
    } 

    // return final image 
    return bmOut; 
} 

Я хочу работать как this приложения.

Там Подписчиков рис с эффектом

First effectsecond effect Third effect fourth effect sixth effect

ответ

2

Если вы читаете код, который вы можете увидеть, что каждый пиксель в ЦСИ получает первый преобразуется в оттенки серого [0-255] Это значение преобразуется обратно в цветной пиксель, используя значение оттенков серого как основание и добавляя глубину * цвета.

Так что, если вы хотите, чтобы растровое изображение зеленый оттенок сделать это следующим образом:

Bitmap result = createEffect(src,50,0,1,0); 

это сделает растровый зеленее.

Чтобы инвертировать цвета (например, в последнем exmaple) использовать это (непроверенные) функцию:

public Bitmap invert(Bitmap src) { 
    // image size 
    int width = src.getWidth(); 
    int height = src.getHeight(); 
    // create output bitmap 
    Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); 
    // color information 
    int A, R, G, B; 
    int pixel; 

    // scan through all pixels 
    for(int x = 0; x < width; ++x) { 
     for(int y = 0; y < height; ++y) { 
      // get pixel color 
      pixel = src.getPixel(x, y); 
      // get color on each channel 
      A = Color.alpha(pixel); 
      R = Color.red(pixel); 
      G = Color.green(pixel); 
      B = Color.blue(pixel); 
      // set new pixel color to output image 
      bmOut.setPixel(x, y, Color.argb(A, 255-R, 255-G, 255-B)); 
     } 
    } 

    // return final image 
    return bmOut; 
} 
+0

Спасибо за ответ, но я уже сделал то, что вы хотите сказать, но я не получаю точный вывод, что хочу, Когда когда-либо передаю значение, это не влияет на фон. –

+0

Итак, экспериментируйте со значениями, пока не получите этот результат. Также вы уверены, что примеры изображений, выполненных с помощью функции, которую вы опубликовали? – Renard

+0

какое значение должно быть передано для получения последнего изображения –

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