我想要替换图像中的颜色并将其分配给imageview我在谷歌搜索了很多时间但仍然没有找到任何有用的资源。我在java rgbimagefilter中看过但是,它没有在android中使用所以我在屏幕截图下面的例外输出:
原始图片
将绿色替换为灰色,如下图所示:
我知道基本的想法,比如阅读图像每个像素比较rgb值,它的匹配替换为新颜色,但我不知道如何在android中以编程方式做到这一点。
答案 0 :(得分:2)
以下是一些建议(下次尝试搜索图像处理; - )):
Aviary SDK -> And the code for it.
Here您可以找到适合各种图像处理的精彩教程。
您可以在这里找到一些库:
最后这个项目here。
读得很好: - )
答案 1 :(得分:0)
如果您不想使用任何第三方库,可以查看以下代码以开始使用:
package pete.android.study;
import android.graphics.Bitmap;
public class ImageProcessor {
Bitmap mImage;
boolean mIsError = false;
public ImageProcessor(final Bitmap image) {
mImage = image.copy(image.getConfig(), image.isMutable());
if(mImage == null) {
mIsError = true;
}
}
public boolean isError() {
return mIsError;
}
public void setImage(final Bitmap image) {
mImage = image.copy(image.getConfig(), image.isMutable());
if(mImage == null) {
mIsError = true;
} else {
mIsError = false;
}
}
public Bitmap getImage() {
if(mImage == null){
return null;
}
return mImage.copy(mImage.getConfig(), mImage.isMutable());
}
public void free() {
if(mImage != null && !mImage.isRecycled()) {
mImage.recycle();
mImage = null;
}
}
public Bitmap replaceColor(int fromColor, int targetColor) {
if(mImage == null) {
return null;
}
int width = mImage.getWidth();
int height = mImage.getHeight();
int[] pixels = new int[width * height];
mImage.getPixels(pixels, 0, width, 0, 0, width, height);
for(int x = 0; x < pixels.length; ++x) {
pixels[x] = (pixels[x] == fromColor) ? targetColor : pixels[x];
}
Bitmap newImage = Bitmap.createBitmap(width, height, mImage.getConfig());
newImage.setPixels(pixels, 0, width, 0, 0, width, height);
return newImage;
}
}