java - 更改下载图像的单色

标签 java android image download color-picker

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

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

我希望能够使用类似颜色 mask 的东西,它基本上可以将颜色覆盖在另一种颜色上(但不是透明区域)或颜色填充......我只需要能够着色在图像的 Activity 部分而不是非 Activity 部分。

由于我还不允许发布图像,因此这里有一个直接链接,可以帮助可视化我想要实现的目标。

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 上,但它们根本没有改变。到目前为止,我已经追踪了所有内容,并且颜色正在由首选项保存,并且可以通过此代码访问。

最佳答案

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

    Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter);

或者试试这个

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

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

关于java - 更改下载图像的单色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10205677/

相关文章:

java - 为什么叫运行时多态呢?

android - 道用例。 MVVM还是Clean Architecture反模式?

Android RecyclerView 适配器项目计数在单元测试中返回 0

html - 如何在 HTML 中显示 SVG 文件中的特定路径元素?

java - java向mysql插入数据的问题

java - jackson + Tomcat - java.lang.VerifyError : Cannot inherit from final class

java - JDK 7 中使用的 ZonedDateTime 和 ChronoUnit 的替代方案

java - 无法禁用android中的按钮

javascript - 如何将<a>标签更改为播放声音的按钮,而不会使用HTML和Javascript在我的网页上移动声音

html - 图片不会排列,文字不会在 img 下