Java 更改下载图像的单色

Java 更改下载图像的单色,java,android,image,download,color-picker,Java,Android,Image,Download,Color Picker,我目前正在尝试向我的应用程序中添加一个颜色选择器,它可以下载图像的zip文件,提取图像并将其安装到用户的SystemUI中 我已经寻找了很长一段时间,试图找到一种在这些图标中改变颜色的方法,但到目前为止,我还没有找到任何可以实现的方法 我想能够使用一些东西,像一个颜色遮罩,它基本上会把颜色放在另一种颜色,但不是透明的区域或颜色填充可以。。。我只需要能够在图像的活动部分,而不是非活动部分的颜色 因为我还不允许发布图片,这里有一个直接的链接来帮助我想象我想要实现的目标 更新-经过一点混乱,再看看周围

我目前正在尝试向我的应用程序中添加一个颜色选择器,它可以下载图像的zip文件,提取图像并将其安装到用户的SystemUI中

我已经寻找了很长一段时间,试图找到一种在这些图标中改变颜色的方法,但到目前为止,我还没有找到任何可以实现的方法

我想能够使用一些东西,像一个颜色遮罩,它基本上会把颜色放在另一种颜色,但不是透明的区域或颜色填充可以。。。我只需要能够在图像的活动部分,而不是非活动部分的颜色

因为我还不允许发布图片,这里有一个直接的链接来帮助我想象我想要实现的目标

更新-经过一点混乱,再看看周围,我发现了一些帮助,我相信

package com.masturmods.settings.util;

import net.margaritov.preference.colorpicker.ColorPickerPreference;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;

public class Colorizer extends ColorPickerPreference {

    public Colorizer(Context context) {
        super(context);
    }

    public static void colorize(String pathName, int color) {
        Bitmap dec = BitmapFactory.decodeFile(pathName);
        Bitmap mIcon = dec.copy(Bitmap.Config.ARGB_8888, true);
        Canvas c = new Canvas(mIcon);
        Paint paint = new Paint(color);
        ColorMatrix cm = new ColorMatrix();
        cm.setSaturation(0);
        ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
        paint.setColorFilter(f);
        c.drawBitmap(mIcon, 0, 0, paint);
        mIcon.recycle();
    }
}

多亏了Herry,这些图像现在已经进入画布,但它们一点也没有改变。到目前为止,我已经跟踪了所有内容,颜色由首选项保存,并由此代码访问。

您需要在colorize方法中使用此代码

    Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter);
或者试试这个

    Bitmap mIcon = dec.copy(Bitmap.Config.ARGB_8888, true);

因为其他方法会返回不可变位图。请注意内存,我的意思是,如果出现,您将处理该问题。有关不可变到可变图像的更多信息,请参阅此SO链接。

您需要在画布中传递可变位图。我有点假设,但我对使用java修改图像是全新的…谢谢!这使得画布拍摄了mIcon位图,但是图像没有发生任何变化。这方面有什么想法吗?在这个问题上你是不是在考虑类似的事情。有没有一种方法可以在忽略灰度的情况下实现这一点?如果饱和度足够低,则忽略某些内容?同样,此方法似乎不适用于位图。。。不知道如何实现这一点?当我将此代码应用到您的应用程序时,请检查此代码,我可以看到浅蓝色被一些类似粉红色的东西所取代。