我工作的应用程序为tattoolater我需要转换图像(从相机或从画廊中选择)转换为纹身…
我的要求如下
我从github找到了一个示例代码
https://github.com/DrewDahlman/ImageFilter/tree/master/Android/project
它用于图像滤波..
我不知道这是将图像转换为纹身的正确过程
如果有人知道这个纹身在androID中请建议我我Google了很多
提前致谢..
解决方法:
你需要一个差异过滤器:
1)你计算水平差异(这里你将有垂直段)
2)你计算了垂直差异(这里是水平线段)
3)你或两张地图,找到轮廓
4)如果你愿意,重新创建一个Bitmap对象
像(EDITED)这样的东西:
int[] pixels;int wIDth = yourbitmap.getWIDth();int height = yourbitmap.getHeight();yourbitmap.getPixels(pixels, 0, wIDth, 0, 0, wIDth, height);// transform grayscaleint[] image = new int[wIDth*height];for (int y=0; y<height; y++) for (int x=0; x<wIDth; x++) { int pixel = image[y*wIDth + x]; image[y*wIDth + x] = (color.red(pixel) + color.green(pixel) + color.blue(pixel))/3; }// calculate diff_x (vertical segments)int[] dx = new int[wIDth*height];for (int y=0; y<height; y++) for (int x=0; x<wIDth; x++) dx[y*wIDth + x] = (x==0 || y== 0 ? 0 : Math.abs(image[y*wIDth + x] - image[y*wIDth + x-1]));// calculate diff_y (horizontal segments)int[] dy = new int[wIDth*height];for (int y=0; y<height; y++) for (int x=0; x<wIDth; x++) dy[y*wIDth + x] = (x==0 || y== 0 ? 0 : Math.abs(image[y*wIDth+x] - image[(y-1)*wIDth+x])); // when the color intensity is higher than THRESHolD, accept segment// you'll want a slIDer to change THRESHolD valuesbool[] result = new bool[wIDth*height];const int THRESHolD = 60; // adjust this valuefor (int y=0; y<height; y++) for (int x=0; x<wIDth; x++) result[y*wIDth + x] = (dx[y*wIDth + x] > THRESHolD || dy[y*wIDth + x] > THRESHolD);Bitmap result = Bitmap.createBitmap(wIDth, height, Bitmap.Config.ARGB_8888);for (int y=0; y<height; y++) for (int x=0; x<wIDth; x++) result.setPixel(x, y, result[y*wIDth+x]? color.Black : color.White);@H_419_34@
总结 以上是内存溢出为你收集整理的android – 如何将图像转换为纹身?全部内容,希望文章能够帮你解决android – 如何将图像转换为纹身?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)