2012-03-02 3 views
1

У меня есть растровое изображение и вы хотите изменить все черные пиксели в этом растровом изображении на синий. Я знаю, что вы можете сделать это через Bitmap.setPixel, но этот процесс очень медленный (поверьте, я попробовал ... даже делая setPixels вместо setPixel).В Android, как изменить цвет растрового изображения на другой цвет?

Исследование показывает, что люди рекомендуют использовать PorterDuff Xor, но нет никаких сообщений о том, как это было успешно выполнено. Многие люди спрашивают ... никто не излагает ответ.

Так что, используя, краску, растровое изображение и холст, как вы меняете каждый черный пиксель на все синие?

Спасибо!

+0

Вы также использовали 'getPixels' вместо' getPixel'? PorterDuff XOR должен работать, но это не обязательно будет так быстро. – kabuko

+0

, в то время как намного сложнее, используя NDK и делая растровое манипулирование в коде C, это способ получить высокую производительность. – CSmith

+0

Я не пробовал getPixels, а только getPixel. Я мог бы сделать это, я думаю, и посмотреть, достаточно ли это. Думал, что метод PorterDuff должен быть быстрым, но я не могу найти хотя бы один пример этого. Последние несколько часов я прохожу по трассе ColorMatrix, но, похоже, это не работает при смене черного на что-то. Только красный, зеленый или синий для чего-то другого. – user443654

ответ

1

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

myBitmap.getPixels (myPixels, 0 0, 0, 0, myBitmap.getWidth(), myBitmap.getHeight())

и перебирает myPixels выглядящих для любого цвета, который вы пожелаете, и изменения этого пикселя на любой цвет, который вы предпочитаете.

+0

Это сделало. Переход к getPixels вместо getPixel. Благодаря! – user443654