2015-11-03 2 views
0

Я пытаюсь сделать некоторые фотофильтры в Android и у меня есть кодфильтр Android фото

for(int x = 0; x < width; ++x) { 
     for(int y = 0; y < height; ++y) { 
      // get pixel color 
      pixel = src.getPixel(x, y); 
      A = Color.alpha(pixel); 
      R = Color.red(pixel); 
      G = Color.green(pixel); 
      B = Color.blue(pixel); 
do some work here 
      bmOut.setPixel(x, y, Color.argb(A, R, G, B)); 

И это очень-очень медленно, и это невозможно сделать что-либо. Есть ли другой способ сделать это?

+0

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

+0

Могу ли я делать все возможное с помощью цветных матриц? Можете ли вы дать мне несколько советов о цветовых матрицах? – encrypt

+0

Вы можете сделать цветовые эффекты. Google 'android colormatrix'. Google ColorMatrix для поиска большего количества ColorMatrices. –

ответ

0

Основы медиаэффектов Android позволяют разработчикам легко применять множество впечатляющих визуальных эффектов для фотографий и видео. Поскольку инфраструктура использует графический процессор для выполнения всех своих операций обработки изображений, он может принимать только текстуры OpenGL в качестве своего ввода. См. this, чтобы узнать, как использовать OpenGL ES 2.0 для преобразования ресурса с возможностью рисования в текстуру, а затем использовать фреймворк для применения к нему различных эффектов. И я думаю, что это быстрее, чем ваш текущий метод!

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