Мне нужно изменить определенный цвет PNG, хранящийся в SDCard. Я не могу использовать tintcolor над растровым изображением или над любым другим объектом, потому что это закрасит все изображение, а не определенный цвет пикселя.Каков наилучший способ изменить цвет пикселя png на пиксель на Android?
Зачем мне это нужно?
Я пытаюсь разработать приложение аватара, и я хочу, чтобы иметь возможность изменить волосы аватара любым цветом, который я выбираю из палитры. Эти волосы имеют два цвета: один для границы, а другой для остальных волос. Я просто хочу изменить цвет воздуха и сохранить границу.
Это простой случай, но на изображении может быть более одного цвета.
Я искал решение. Это единственное, что я нашел (meaby там может быть больше, но я не повезло):
Android Bitmap: Convert transparent pixels to a color
И это то, что он подвергается там:
Bitmap b = ...;
for(int x = 0; x<b.getWidth(); x++){
for(int y = 0; y<b.getHeight(); y++){
if(b.getPixel(x, y) == Color.TRANSPARENT){
b.setPixel(x, y, Color.WHITE);
}
}
}
Я хочу знать, если есть лучший способ сделать это. Что-то вроде:
bipmapImage.changeColor(originalColor, newColor);
Я не знаю, если с помощью цикла, чтобы проверить пиксель пиксель является хорошим показателем. Представьте себе изображение 1080 x 1080.
Заранее спасибо.
Вы используете прозрачность, чтобы указать, какие пиксели являются волосами? – samgak
Вам лучше использовать API-интерфейсы OpenCV Matrix, особенно для производительности (и компактности). –
@samgak Я не использую прозрачность, потому что я могу менять несколько цветов на одном изображении. –