我想替换图像中的颜色并将其分配给 imageview 我在 google 中搜索了很多时间,但仍然没有找到任何有用的资源。我在 java rgbimagefilter 中看到过,但是它没有在 android 中使用,所以我的输出除外下面的截图:
原始图像
将绿色替换为灰色后,如下图所示:
我知道基本的想法,比如读取图像每个像素比较 rgb 值,因为它的匹配替换为新颜色,但我不知道如何在 android 中以编程方式做到这一点。
我想替换图像中的颜色并将其分配给 imageview 我在 google 中搜索了很多时间,但仍然没有找到任何有用的资源。我在 java rgbimagefilter 中看到过,但是它没有在 android 中使用,所以我的输出除外下面的截图:
原始图像
将绿色替换为灰色后,如下图所示:
我知道基本的想法,比如读取图像每个像素比较 rgb 值,因为它的匹配替换为新颜色,但我不知道如何在 android 中以编程方式做到这一点。
以下是一些建议(下次尝试搜索图像处理;-)):
在这里你可以找到一个很好的关于各种图像处理的教程。
在这里您可以找到一些库:
ImageJ,http: //rsbweb.nih.gov/ij/
斐济, http: //fiji.sc/wiki/index.php/Fiji
最后这个项目在这里。
阅读愉快:-)
如果您不想使用任何第三方库,可以检查以下代码以帮助您入门:
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;
}
}