更改下载图像的单色

时间:2012-04-18 08:31:49

标签: java android image download color-picker

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

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

我希望能够使用类似彩色面具的东西,它基本上将颜色放在另一种颜色(但不是透明区域)或颜色填充会做...我只需要能够着色在图像的活动部分而不是非活动部分。

由于我还不允许发布图片,所以这里有一个直接链接,可以帮助我看到我想要实现的目标。

http://i1135.photobucket.com/albums/m636/Mastur_Mynd/stack_img.png

更新 - 稍微搞砸了一下后再找一些我觉得有点帮助我相信......

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,图像现在传递到Canvas,但它们根本没有变化。到目前为止,我已经跟踪了所有内容,并且首选项保存了颜色,并且正在通过此代码访问。

1 个答案:

答案 0 :(得分:0)

您需要在着色方法

中使用此代码
    Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter);

或试试这个

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

因为其他方法返回你的Immutable Bitmap.Be care for Memory我意味着你会处理它如果出现。有关不可变的可变图像的更多信息请参阅此SO链接。Click here