Изменить цвет bitmap изображения с помощью цветовой матрицы
Я прочитал статью об изменении цвета растрового изображения https://stackoverflow.com/questions/5699810/how-to-change-bitmap-image-color-in-android, но у меня это не работает. Может я что-то не так делаю.
public void changeColor(@NonNull Integer color){
String[] tempMatrix = null;
//Takes a color matrix from resources
String[] getColorMatrix = resources.getStringArray(resources.getIdentifier("c"+color, "array", context.getPackageName()));
int getColorMatrixCols = getColorMatrix[1].split(",").length;
//Transform string values to float
int k = 0;
for (String colorMatrix : getColorMatrix) {
tempMatrix = colorMatrix.split(",");
for (int j = 0; j < getColorMatrixCols; j++, k++) {
this.colorTransform[k] = Float.parseFloat(tempMatrix[j]);
}
}
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.setSaturation(0f); //Remove Colour
colorMatrix.set(this.colorTransform);
ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
Paint paint = new Paint();
paint.setColorFilter(colorFilter);
Я не знаю, нужно ли мне создавать новое растровое изображение, потому что я могу использовать исходное растровое изображение.
Bitmap resultBitmap = Bitmap.createBitmap(this.bitmap, 0, 0, this.bitmap.getWidth(), this.bitmap.getHeight());
Canvas canvas = new Canvas(resultBitmap);
canvas.drawBitmap(resultBitmap, 0, 0, paint);
this.bitmap = resultBitmap;
}
Код, как я получаю картинку. Может дело в этом?
@SuppressLint("UseCompatLoadingForDrawables") BitmapDrawable bitmapdraw = (BitmapDrawable) getResources().getDrawable(R.mipmap.ic_school);
ChangeBitmap changeBitmap = new ChangeBitmap(this, bitmapdraw.getBitmap());
Сама картинка скачана с fontawesome https://fontawesome.com/icons/school?style=solid и трансформирована в .bpm с помощью сервиса https://image.online-convert.com/ru/convert/svg-to-bmp.