Android 如何将图像转换为纹身?

Android 如何将图像转换为纹身?,android,image,Android,Image,我工作的应用程序纹身在稍后,我需要转换一个图像(这是从相机或画廊选择)到纹身 我的要求如下 我从github找到了一个示例代码 https://github.com/DrewDahlman/ImageFilter/tree/master/Android/project 它用于图像过滤 我不知道这是正确的过程,以转换图像纹身与否 如果有人知道android上的纹身,请告诉我我在谷歌上搜索了很多 提前感谢。您需要一个差异过滤器: 1) 计算水平差(这里有垂直线段) 2) 计算垂直差(此处为水平段)

我工作的应用程序纹身在稍后,我需要转换一个图像(这是从相机或画廊选择)到纹身

我的要求如下

我从github找到了一个示例代码
https://github.com/DrewDahlman/ImageFilter/tree/master/Android/project

它用于图像过滤

我不知道这是正确的过程,以转换图像纹身与否

如果有人知道android上的纹身,请告诉我我在谷歌上搜索了很多


提前感谢。

您需要一个差异过滤器:

1) 计算水平差(这里有垂直线段)

2) 计算垂直差(此处为水平段)

3) 你或两张地图,寻找轮廓

4) 如果希望,请重新创建位图对象

类似(编辑):

int[]像素;
int width=yourbitmap.getWidth();
int height=yourbitmap.getHeight();
getPixels(像素,0,宽度,0,0,宽度,高度);
//变换灰度
int[]图像=新int[宽度*高度];
对于(int y=0;y,您可以使用:

 public static Bitmap ConvertToBlackAndWhite(Bitmap sampleBitmap) {
        ColorMatrix bwMatrix = new ColorMatrix();
        bwMatrix.setSaturation(0);
        final ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(
                bwMatrix);
        Bitmap rBitmap = sampleBitmap.copy(Bitmap.Config.ARGB_8888, true);
        Paint paint = new Paint();
        paint.setColorFilter(colorFilter);
        Canvas myCanvas = new Canvas(rBitmap);
        myCanvas.drawBitmap(rBitmap, 0, 0, paint);
        return doBlackWhiteImage(rBitmap);
    }

public static BlackWhiteImage doBlackWhiteImage(Bitmap myBitmap) {
        int[] allpixels = new int[myBitmap.getHeight() * myBitmap.getWidth()];
        myBitmap.getPixels(allpixels, 0, myBitmap.getWidth(), 0, 0,
                myBitmap.getWidth(), myBitmap.getHeight());
        for (int i = 0; i < myBitmap.getHeight() * myBitmap.getWidth(); i++) {
            if (allpixels[i] == Color.BLACK)
                // do something
            else if (allpixels[i] == Color.TRANSPARENT)
                // do something
            else if (allpixels[i] == Color.WHITE)
                // do something
            else {
                allpixels[i] = Color.WHITE;
            }
        }
        myBitmap.setPixels(allpixels, 0, myBitmap.getWidth(), 0, 0,
                myBitmap.getWidth(), myBitmap.getHeight());
        return myBitmap;
    }
public静态位图ConvertToBlackAndWhite(位图采样位图){
ColorMatrix bwMatrix=新ColorMatrix();
b.设定饱和度(0);
最终ColorMatrixColorFilter colorFilter=新ColorMatrixColorFilter(
bw矩阵);
位图rBitmap=sampleBitmap.copy(Bitmap.Config.ARGB_8888,true);
油漆=新油漆();
油漆。设置颜色过滤器(颜色过滤器);
Canvas myCanvas=新画布(rBitmap);
myCanvas.drawBitmap(rBitmap,0,0,paint);
返回doBlackWhiteImage(rBitmap);
}
公共静态黑白图像DoblakwhiteImage(位图myBitmap){
int[]allpixels=newint[myBitmap.getHeight()*myBitmap.getWidth()];
myBitmap.getPixels(所有像素,0,myBitmap.getWidth(),0,0,
myBitmap.getWidth(),myBitmap.getHeight();
对于(int i=0;i
无用的观察:图像来自iphone?我尝试使用您的代码,它在将位图传递给ConvertToBlackWhite()后显示白色图像。此方法在DoblakWhiteImage()中,您使用白色、透明、黑色检查像素,否则默认颜色为白色(如何检查剩余颜色),所以我认为这就是问题所在……请你解决这个问题好吗?如何计算位图的水平差和垂直差发布的代码应该同时计算差异和最终值,或者,唯一缺少的是转换位图->字节[][]矩阵。我对安卓不太了解,但我认为位图.getPixels(…)应该这样做,因为它在android中不起作用位图仅转换为字节[]矩阵,而没有转换为字节[][]矩阵以及这里的image.x和image.y不可识别…您能否给出清晰的explorationCode edited,应该更容易实现然后如何设置最终图像转换位图…您将值存储在bool中,知道它在bitmap.setpixels()方法中不可识别。。
 public static Bitmap ConvertToBlackAndWhite(Bitmap sampleBitmap) {
        ColorMatrix bwMatrix = new ColorMatrix();
        bwMatrix.setSaturation(0);
        final ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(
                bwMatrix);
        Bitmap rBitmap = sampleBitmap.copy(Bitmap.Config.ARGB_8888, true);
        Paint paint = new Paint();
        paint.setColorFilter(colorFilter);
        Canvas myCanvas = new Canvas(rBitmap);
        myCanvas.drawBitmap(rBitmap, 0, 0, paint);
        return doBlackWhiteImage(rBitmap);
    }

public static BlackWhiteImage doBlackWhiteImage(Bitmap myBitmap) {
        int[] allpixels = new int[myBitmap.getHeight() * myBitmap.getWidth()];
        myBitmap.getPixels(allpixels, 0, myBitmap.getWidth(), 0, 0,
                myBitmap.getWidth(), myBitmap.getHeight());
        for (int i = 0; i < myBitmap.getHeight() * myBitmap.getWidth(); i++) {
            if (allpixels[i] == Color.BLACK)
                // do something
            else if (allpixels[i] == Color.TRANSPARENT)
                // do something
            else if (allpixels[i] == Color.WHITE)
                // do something
            else {
                allpixels[i] = Color.WHITE;
            }
        }
        myBitmap.setPixels(allpixels, 0, myBitmap.getWidth(), 0, 0,
                myBitmap.getWidth(), myBitmap.getHeight());
        return myBitmap;
    }