图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧,哈哈镜,放大镜)

java 浮雕效果_android 图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧,哈哈镜,放大镜)... 原图:一:圆角处理效果:代码:publicstaticBitmapgetRoundedCornerBitmap(Bitmapbitmap,floatroundPx){Bitmapoutput=Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),Config.ARGB_8888);Canvascanvas=newCan... 阅读详情



原图:

一:圆角处理

效果:

代码:

 

  1. public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx)  
  2.     {  
  3.   
  4.         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),  
  5.                 bitmap.getHeight(), Config.ARGB_8888);  
  6.         Canvas canvas = new Canvas(output);  
  7.   
  8.         final int color = 0xff424242;  
  9.         final Paint paint = new Paint();  
  10.         final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());  
  11.         final RectF rectF = new RectF(rect);  
  12.   
  13.         paint.setAntiAlias(true);  
  14.         canvas.drawARGB(0, 0, 0, 0);  
  15.         paint.setColor(color);  
  16.         canvas.drawRoundRect(rectF, roundPx, roundPx, paint);  
  17.   
  18.         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
  19.         canvas.drawBitmap(bitmap, rect, rect, paint);  
  20.   
  21.         return output;  
  22.     }  

 

 

 理解:

这个就简单了,实际上是在原图片上画了一个圆角遮罩。对于paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));方法我刚看到也是一知半解Mode.SRC_IN参数是个画图模式,该类型是指只显示两层图案的交集部分,且交集部位只显示上层图像。实际就是先画了一个圆角矩形的过滤框,于是形状有了,再将框中的内容填充为图片。该参数总过有十八种:

 

public static final PorterDuff.Mode ADD
public static final PorterDuff.Mode CLEAR
public static final PorterDuff.Mode DST
public static final PorterDuff.Mode DST_ATOP
public static final PorterDuff.Mode DST_IN

and so on;

 

是区分不同的画图叠加效果,这个人的博客讲的很清楚:http://www.cnblogs.com/sank615/archive/2013/03/12/2955675.html。我也没做demo,所以不啰嗦了。

二:灰白处理

效果:

代码:

 

  1. public static Bitmap toGrayscale(Bitmap bmpOriginal)  
  2.     {  
  3.         int width, height;  
  4.         height = bmpOriginal.getHeight();  
  5.         width = bmpOriginal.getWidth();  
  6.   
  7.         Bitmap bmpGrayscale = Bitmap.createBitmap(width, height,  
  8.                 Bitmap.Config.RGB_565);  
  9.         Canvas c = new Canvas(bmpGrayscale);  
  10.         Paint paint = new Paint();  
  11.         ColorMatrix cm = new ColorMatrix();  
  12.         cm.setSaturation(0);  
  13.         ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);  
  14.         paint.setColorFilter(f);  
  15.         c.drawBitmap(bmpOriginal, 0, 0, paint);  
  16.         return bmpGrayscale;  
  17.     }  

理解:

 

这个也没什么好说的,就是利用了ColorMatrix 类自带的设置饱和度的方法setSaturation()。不过其方法内部实现的更深一层是利用颜色矩阵的乘法实现的,对于颜色矩阵的乘法下面还有使用。

三 黑白处理

效果:

代码:

 

  1. public static Bitmap toHeibai(Bitmap mBitmap)  
  2.     {  
  3.         int mBitmapWidth = 0;  
  4.         int mBitmapHeight = 0;  
  5.   
  6.         mBitmapWidth = mBitmap.getWidth();  
  7.         mBitmapHeight = mBitmap.getHeight();  
  8.         Bitmap bmpReturn = Bitmap.createBitmap(mBitmapWidth, mBitmapHeight,  
  9.                 Bitmap.Config.ARGB_8888);  
  10.         int iPixel = 0;  
  11.         for (int i = 0; i < mBitmapWidth; i++)  
  12.         {  
  13.             for (int j = 0; j < mBitmapHeight; j++)  
  14.             {  
  15.                 int curr_color = mBitmap.getPixel(i, j);  
  16.   
  17.                 int avg = (Color.red(curr_color) + Color.green(curr_color) + Color  
  18.                         .blue(curr_color)) / 3;  
  19.                 if (avg >= 100)  
  20.                 {  
  21.                     iPixel = 255;  
  22.                 }  
  23.                 else  
  24.                 {  
  25.                     iPixel = 0;  
  26.                 }  
  27.                 int modif_color = Color.argb(255, iPixel, iPixel, iPixel);  
  28.   
  29.                 bmpReturn.setPixel(i, j, modif_color);  
  30.             }  
  31.         }  
  32.         return bmpReturn;  
  33.     }  

 

 

理解:

其实看图片效果就能看出来,这张图片不同于灰白处理的那张,不同之处是灰白处理虽然没有了颜色,但是黑白的程度层次依然存在,而此张图片连层次都没有了,只有两个区别十分明显的黑白颜色。实现的算法也很简单,对于每个像素的rgb值求平均数,如果高于100算白色,低于100算黑色。不过感觉100这个标准值太大了,导致图片白色区域太多,把它降低点可能效果会更好。(作者代码方法命名竟然是汉语拼音,原来是国人写的,是不是github也记不清了,我尊重原创,但是下载地址真的忘了。另外我把作者图片换了,额……)

四:镜像处理

效果:

代码:

 

  1. public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap)  
  2.     {  
  3.         final int reflectionGap = 4;  
  4.         int width = bitmap.getWidth();  
  5.         int height = bitmap.getHeight();  
  6.   
  7.         Matrix matrix = new Matrix();  
  8.         matrix.preScale(1, -1);  
  9.   
  10.         Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2,  
  11.                 width, height / 2, matrix, false);  
  12.   
  13.         Bitmap bitmapWithReflection = Bitmap.createBitmap(width,  
  14.                 (height + height / 2), Config.ARGB_8888);  
  15.   
  16.         Canvas canvas = new Canvas(bitmapWithReflection);  
  17.         canvas.drawBitmap(bitmap, 0, 0, null);  
  18.         Paint deafalutPaint = new Paint();  
  19.         canvas.drawRect(0, height, width, height + reflectionGap, deafalutPaint);  
  20.   
  21.         canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);  
  22.   
  23.         Paint paint = new Paint();  
  24.         LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,  
  25.                 bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,  
  26.                 0x00ffffff, TileMode.CLAMP);  
  27.         paint.setShader(shader);  
  28.         // Set the Transfer mode to be porter duff and destination in  
  29.         paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
  30.         // Draw a rectangle using the paint with our linear gradient  
  31.         canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()  
  32.                 + reflectionGap, paint);  
  33.   
  34.         return bitmapWithReflection;  
  35.     }  

 

 

理解:

记得去年android入门时做过gallery的倒影特效,当时感觉很漂亮,想着需要作出反转和倾斜就可以了,原来他也是这么做的。原理就是将原图片反转一下,调整一   下它的颜色作出倒影效果,再将两张图片续加在一起,不过如果在反转的同时再利用Matrix加上一些倾斜角度就更好了,不过那样做的话加工后的图片的高度需要同比例计算出来,不能简单的相加了,否则就图片大小就容不下现有的像素内容。

五:加旧处理

效果:

代码:

 

  1. public static Bitmap testBitmap(Bitmap bitmap)  
  2.     {  
  3.         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),  
  4.                 bitmap.getHeight(), Config.RGB_565);  
  5.   
  6.         Canvas canvas = new Canvas(output);  
  7.   
  8.         Paint paint = new Paint();          
  9.         ColorMatrix cm = new ColorMatrix();  
  10.         float[] array = {1,0,0,0,50,  
  11.                 0,1,0,0,50,  
  12.                 0,0,1,0,0,  
  13.                 0,0,0,1,0};  
  14.         cm.set(array);  
  15.         paint.setColorFilter(new ColorMatrixColorFilter(cm));  
  16.   
  17.         canvas.drawBitmap(bitmap, 0, 0, paint);  
  18.         return output;  
  19.     }  

 

 

理解:

其实每张图片的存储都是存的每个像素的rgba值,而对其操作的时候又将其四个数值定位一个5行1列的矩阵,最后一行值为1,这样一来利用矩阵对其操作确实方便了好多,矩阵的乘法可以轻松的实现某个或全部分量按比例或加常熟的增加或减少。正如这个博客所讲:http://www.cnblogs.com/leon19870907/articles/1978065.html  比如现有一张图片,其每个point的rgba值为{100,100,100,255}也就是灰色全图,我们希望其红色部位增加一倍,剩余部分增加十。就可以将其值虚拟为五行一列矩阵:{100   再让这个矩阵:{2,0,0,0,0     乘以它。得到{  200,110,100,100} 。  这个泛黄照片的处理算法原理就是让每个像素点rg值增加50,rg值相混合就得到了黄色。

100                                 0,1,0,0,10

100                                 0,0,1,0,10

100 0,0,0,1,10

1}

 

六:哈哈镜处理

效果:

代码:

 

  1. jintArray Java_com_spore_meitu_jni_ImageUtilEngine_toHahajing  
  2.   (JNIEnv* env,jobject thiz, jintArray buf, jint width, jint height,jint centerX, jint centerY, jint radius, jfloat multiple)  
  3. {  
  4.     jint * cbuf;  
  5.         cbuf = (*env)->GetIntArrayElements(env, buf, 0);  
  6.   
  7.         int newSize = width * height;  
  8.         jint rbuf[newSize];   
  9.   
  10.         float xishu = multiple;  
  11.         int real_radius = (int)(radius / xishu);  
  12.   
  13.         int i = 0, j = 0;  
  14.         for (i = 0; i < width; i++)  
  15.         {  
  16.             for (j = 0; j < height; j++)  
  17.             {  
  18.                 int curr_color = cbuf[j * width + i];  
  19.   
  20.                 int pixR = red(curr_color);  
  21.                 int pixG = green(curr_color);  
  22.                 int pixB = blue(curr_color);  
  23.                 int pixA = alpha(curr_color);  
  24.   
  25.                 int newR = pixR;  
  26.                 int newG = pixG;  
  27.                 int newB = pixB;  
  28.                 int newA = pixA;  
  29.   
  30.                 int distance = (int) ((centerX - i) * (centerX - i) + (centerY - j) * (centerY - j));  
  31.                 if (distance < radius * radius)  
  32.                 {  
  33.                       
  34.                     int src_x = (int) ((float) (i - centerX) / xishu);  
  35.                     int src_y = (int) ((float) (j - centerY) / xishu);  
  36.                     src_x = (int)(src_x * (sqrt(distance) / real_radius));  
  37.                     src_y = (int)(src_y * (sqrt(distance) / real_radius));  
  38.                     src_x = src_x + centerX;  
  39.                     src_y = src_y + centerY;  
  40.   
  41.                     int src_color = cbuf[src_y * width + src_x];  
  42.                     newR = red(src_color);  
  43.                     newG = green(src_color);  
  44.                     newB = blue(src_color);  
  45.                     newA = alpha(src_color);  
  46.                 }  
  47.   
  48.                 newR = min(255, max(0, newR));  
  49.                 newG = min(255, max(0, newG));  
  50.                 newB = min(255, max(0, newB));  
  51.                 newA = min(255, max(0, newA));  
  52.   
  53.                 int modif_color = ARGB(newA, newR, newG, newB);  
  54.                 rbuf[j * width + i] = modif_color;  
  55.             }  
  56.         }  
  57.   
  58.         jintArray result = (*env)->NewIntArray(env, newSize);  
  59.         (*env)->SetIntArrayRegion(env, result, 0, newSize, rbuf);  
  60.         (*env)->ReleaseIntArrayElements(env, buf, cbuf, 0);  
  61.         return result;  
  62. }  

 

 

理解:

搞不懂一个图片处理,为什么作者要加到jni那层去,速度能提升多少,赤裸裸的嘲讽我们的技术。纯c代码真懒得看,心情好的时候再看,看完了再来更新,猜测实现原理是根据哈哈镜的半径,以中心点为圆心,每个像素点的坐标位移并扩展,离中心点越近的就扩展越大。

七:放大镜处理

直接给代码吧:

 

  1. jintArray Java_com_spore_meitu_jni_ImageUtilEngine_toFangdajing  
  2.   (JNIEnv* env,jobject thiz, jintArray buf, jint width, jint height,jint centerX, jint centerY, jint radius, jfloat multiple)  
  3. {  
  4.     jint * cbuf;  
  5.     cbuf = (*env)->GetIntArrayElements(env, buf, 0);  
  6.   
  7.     int newSize = width * height;  
  8.     jint rbuf[newSize]; // 鏂板浘鍍忓儚绱犲�  
  9.   
  10.     float xishu = multiple;  
  11.     int real_radius = (int)(radius / xishu);  
  12.   
  13.     int i = 0, j = 0;  
  14.     for (i = 0; i < width; i++)  
  15.     {  
  16.         for (j = 0; j < height; j++)  
  17.         {  
  18.             int curr_color = cbuf[j * width + i];  
  19.   
  20.             int pixR = red(curr_color);  
  21.             int pixG = green(curr_color);  
  22.             int pixB = blue(curr_color);  
  23.             int pixA = alpha(curr_color);  
  24.   
  25.             int newR = pixR;  
  26.             int newG = pixG;  
  27.             int newB = pixB;  
  28.             int newA = pixA;  
  29.   
  30.             int distance = (int) ((centerX - i) * (centerX - i) + (centerY - j) * (centerY - j));  
  31.             if (distance < radius * radius)  
  32.             {  
  33.                 // 鍥惧儚鏀惧ぇ鏁堟灉  
  34.                 int src_x = (int)((float)(i - centerX) / xishu + centerX);  
  35.                 int src_y = (int)((float)(j - centerY) / xishu + centerY);  
  36.   
  37.                 int src_color = cbuf[src_y * width + src_x];  
  38.                 newR = red(src_color);  
  39.                 newG = green(src_color);  
  40.                 newB = blue(src_color);  
  41.                 newA = alpha(src_color);  
  42.             }  
  43.   
  44.             newR = min(255, max(0, newR));  
  45.             newG = min(255, max(0, newG));  
  46.             newB = min(255, max(0, newB));  
  47.             newA = min(255, max(0, newA));  
  48.   
  49.             int modif_color = ARGB(newA, newR, newG, newB);  
  50.             rbuf[j * width + i] = modif_color;  
  51.         }  
  52.     }  
  53.   
  54.     jintArray result = (*env)->NewIntArray(env, newSize);  
  55.     (*env)->SetIntArrayRegion(env, result, 0, newSize, rbuf);  
  56.     (*env)->ReleaseIntArrayElements(env, buf, cbuf, 0);  
  57.     return result;  
  58. }  

 

 

八:浮雕处理

效果:

代码:

 

  1. public static Bitmap toFuDiao(Bitmap mBitmap)  
  2.     {  
  3.           
  4.   
  5.         int mBitmapWidth = 0;  
  6.         int mBitmapHeight = 0;  
  7.   
  8.         mBitmapWidth = mBitmap.getWidth();  
  9.         mBitmapHeight = mBitmap.getHeight();  
  10.         Bitmap bmpReturn = Bitmap.createBitmap(mBitmapWidth, mBitmapHeight,  
  11.                 Bitmap.Config.RGB_565);  
  12.         int preColor = 0;  
  13.         int prepreColor = 0;  
  14.         preColor = mBitmap.getPixel(0, 0);  
  15.   
  16.         for (int i = 0; i < mBitmapWidth; i++)  
  17.         {  
  18.             for (int j = 0; j < mBitmapHeight; j++)  
  19.             {  
  20.                 int curr_color = mBitmap.getPixel(i, j);  
  21.                 int r = Color.red(curr_color) - Color.red(prepreColor) +127;  
  22.                 int g = Color.green(curr_color) - Color.red(prepreColor) + 127;  
  23.                 int b = Color.green(curr_color) - Color.blue(prepreColor) + 127;  
  24.                 int a = Color.alpha(curr_color);  
  25.                 int modif_color = Color.argb(a, r, g, b);  
  26.                 bmpReturn.setPixel(i, j, modif_color);  
  27.                 prepreColor = preColor;  
  28.                 preColor = curr_color;  
  29.             }  
  30.         }  
  31.   
  32.         Canvas c = new Canvas(bmpReturn);  
  33.         Paint paint = new Paint();  
  34.         ColorMatrix cm = new ColorMatrix();  
  35.         cm.setSaturation(0);  
  36.         ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);  
  37.         paint.setColorFilter(f);  
  38.         c.drawBitmap(bmpReturn, 0, 0, paint);  
  39.   
  40.         return bmpReturn;  
  41.     }  

 

 

理解:

观察浮雕就不难发现,其实浮雕的特点就是在颜色有跳变的地方就刻条痕迹。127,127,127为深灰色,近似于石头的颜色,此处取该颜色为底色。算法是将上一个点的rgba值减去当前点的rgba值然后加上127得到当前点的颜色。

九:底片处理

效果:

代码:

 

  1. jintArray Java_com_spore_meitu_jni_ImageUtilEngine_toDipian  
  2.   (JNIEnv* env,jobject thiz, jintArray buf, jint width, jint height)  
  3. {  
  4.     jint * cbuf;  
  5.     cbuf = (*env)->GetIntArrayElements(env, buf, 0);  
  6.     LOGE("Bitmap Buffer %d %d",cbuf[0],cbuf[1]);  
  7.   
  8.     int newSize = width * height;  
  9.     jint rbuf[newSize];  
  10.   
  11.     int count = 0;  
  12.     int preColor = 0;  
  13.     int prepreColor = 0;  
  14.     int color = 0;  
  15.     preColor = cbuf[0];  
  16.   
  17.     int i = 0;  
  18.     int j = 0;  
  19.     int iPixel = 0;  
  20.     for (i = 0; i < width; i++) {  
  21.         for (j = 0; j < height; j++) {  
  22.             int curr_color = cbuf[j * width + i];  
  23.   
  24.             int r = 255 - red(curr_color);  
  25.             int g = 255 - green(curr_color);  
  26.             int b = 255 - blue(curr_color);  
  27.             int a = alpha(curr_color);  
  28.             int modif_color = ARGB(a, r, g, b);  
  29.             rbuf[j * width + i] = modif_color;  
  30.         }  
  31.     }  
  32.     jintArray result = (*env)->NewIntArray(env, newSize);   
  33.     (*env)->SetIntArrayRegion(env, result, 0, newSize, rbuf);   
  34.     (*env)->ReleaseIntArrayElements(env, buf, cbuf, 0);   
  35.     return result;  
  36. }  

理解:

 

算法实现是每个点grb值取为255之差,效果也真是底片效果,但是没有想通为什么这样运算就可以得到底片,回头更新。

十:油画处理

效果:

代码:

 

  1. public static Bitmap toYouHua(Bitmap bmpSource)  
  2.     {  
  3.         Bitmap bmpReturn = Bitmap.createBitmap(bmpSource.getWidth(),  
  4.                 bmpSource.getHeight(), Bitmap.Config.RGB_565);  
  5.         int color = 0;  
  6.         int Radio = 0;  
  7.         int width = bmpSource.getWidth();  
  8.         int height = bmpSource.getHeight();  
  9.   
  10.         Random rnd = new Random();  
  11.         int iModel = 10;  
  12.         int i = width - iModel;  
  13.         while (i > 1)  
  14.         {  
  15.             int j = height - iModel;  
  16.             while (j > 1)  
  17.             {  
  18.                 int iPos = rnd.nextInt(100000) % iModel;  
  19.                 color = bmpSource.getPixel(i + iPos, j + iPos);  
  20.                 bmpReturn.setPixel(i, j, color);  
  21.                 j = j - 1;  
  22.             }  
  23.             i = i - 1;  
  24.         }  
  25.         return bmpReturn;  
  26.     }  

理解:

 

赞一下这个算法,其实应该说鄙视下自己,在看到效果图的时候,我会先猜一下原理,但是这个始终没有想出来。其实油画因为是用画笔画的,彩笔画的时候没有那么精确会将本该这点的颜色滑到另一个点处。算法实现就是取一个一定范围内的随机数,每个点的颜色是该点减去随机数坐标后所得坐标的颜色。

十一:模糊处理

效果:

代码:

 

  1. public static Bitmap toMohu(Bitmap bmpSource, int Blur)  
  2.     {  
  3.         int mode = 5;  
  4.         Bitmap bmpReturn = Bitmap.createBitmap(bmpSource.getWidth(),  
  5.                 bmpSource.getHeight(), Bitmap.Config.ARGB_8888);  
  6.         int pixels[] = new int[bmpSource.getWidth() * bmpSource.getHeight()];  
  7.         int pixelsRawSource[] = new int[bmpSource.getWidth()  
  8.                 * bmpSource.getHeight() * 3];  
  9.         int pixelsRawNew[] = new int[bmpSource.getWidth()  
  10.                 * bmpSource.getHeight() * 3];  
  11.   
  12.         bmpSource.getPixels(pixels, 0, bmpSource.getWidth(), 0, 0,  
  13.                 bmpSource.getWidth(), bmpSource.getHeight());  
  14.   
  15.         for (int k = 1; k <= Blur; k++)   
  16.         {  
  17.               
  18.             for (int i = 0; i < pixels.length; i++)  
  19.             {  
  20.                 pixelsRawSource[i * 3 + 0] = Color.red(pixels[i]);  
  21.                 pixelsRawSource[i * 3 + 1] = Color.green(pixels[i]);  
  22.                 pixelsRawSource[i * 3 + 2] = Color.blue(pixels[i]);  
  23.             }  
  24.               
  25.             int CurrentPixel = bmpSource.getWidth() * 3 + 3;  
  26.           
  27.             for (int i = 0; i < bmpSource.getHeight() - 3; i++)   
  28.             {  
  29.                 for (int j = 0; j < bmpSource.getWidth() * 3; j++)   
  30.                 {  
  31.                     CurrentPixel += 1;  
  32.                     int sumColor = 0;   
  33.                     sumColor = pixelsRawSource[CurrentPixel  
  34.                             - bmpSource.getWidth() * 3];   
  35.                     sumColor = sumColor + pixelsRawSource[CurrentPixel - 3];  
  36.                     sumColor = sumColor + pixelsRawSource[CurrentPixel + 3];   
  37.                     sumColor = sumColor  
  38.                             + pixelsRawSource[CurrentPixel  
  39.                                     + bmpSource.getWidth() * 3];   
  40.                     pixelsRawNew[CurrentPixel] = Math.round(sumColor / 4);  
  41.                 }  
  42.             }  
  43.   
  44.             for (int i = 0; i < pixels.length; i++)  
  45.             {  
  46.                 pixels[i] = Color.rgb(pixelsRawNew[i * 3 + 0],  
  47.                         pixelsRawNew[i * 3 + 1], pixelsRawNew[i * 3 + 2]);  
  48.             }  
  49.         }  
  50.   
  51.         bmpReturn.setPixels(pixels, 0, bmpSource.getWidth(), 0, 0,  
  52.                 bmpSource.getWidth(), bmpSource.getHeight());   
  53.         return bmpReturn;  
  54.     }  

理解:

 

算法实现其实是取每三点的平均值做为当前点颜色,这样看上去就变得模糊了。这个算法是三点的平均值,如果能够将范围扩大,并且不是单纯的平均值,而是加权平均肯定效果会更好。不过处理速度实在是太慢了,而Muzei这种软件在处理的时候,不仅仅速度特别快,而且还有逐渐变模糊的变化过程,显然人家不是用这种算法实现的。他们的实现方法正在猜测中,实现后也来更新。

有着梦想,但改变不了世界, 只有坚持,让生活不再单调, 我不是我, 我还是我
java 实现图像浮雕的方法 java 图像浮雕的方法,资料比较少,拿上来共享下 立即下载

相关推荐

浮 雕 效 果.rar

浮雕效果.rar浮雕效果.rar浮雕效果.rar浮雕效果.rar浮雕效果.rar

android 图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧,哈哈镜,放大镜)

原图: 一:圆角处理 效果: 代码:   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public

tanlongzhiwen1的专栏 913

Android自定义view实现画布,镜像画布,Android简单的主题颜色切换

Android自定义view实现画布,镜像画布,Android简单的主题颜色切换 下载前请先看效果图,确定是否是您想要的 效果图地址:http://blog.youkuaiyun.com/ink_s/article/details/79021904

图像特效---哈哈镜效果滤镜

本文介绍了哈哈镜特效的实现过程,并放上了完整的程序DEMO下载链接,跟大家分享一下!

bravebean的博客 9030

手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略

本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。

weixin_29008805的博客 449

5060TI显卡深度学习环境搭建:CUDA12.8与CUDNN9.8.0的完美搭配

本文详细介绍了在Win10系统下为5060TI显卡搭建深度学习环境的最佳实践,重点配置CUDA12.8与CUDNN9.8.0的完美组合。通过优化OpenCV编译选项和YOLOv5环境设置,显著提升模型训练和推理效率,帮助开发者充分发挥5060TI显卡的性能潜力。

weixin_29065791的博客 488

android canvas镜像,Android 高级UI9 Canvas save和restore的使用

自己定义控件时经常遇到重写View的draw()方法,draw()方法经常设计到save()和restore()这两个方法.这两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的。save():用来保存canvas的状态,save()方法之后的代码,能够调用canvas的平移、放缩、旋转、裁剪等操作!restore():用来恢复canvas之前保存的状态,防止save()方法代码之后对c...

weixin_28730353的博客 488

汽车BMS技术分享及其HIL测试方案

在全球碳中和目标的战略驱动下,新能源汽车产业正以指数级速度重塑交通出行格局。动力电池作为电动汽车的"心脏",其性能与安全性不仅直接决定了车辆的续航里程、使用寿命等关键指标,更深刻影响着消费者对电动汽车的市场接受度。而电池管理系统(Battery Management System, BMS)是动力电池安全运行与性能释放的核心技术支撑。

Speedgoat的博客 2685

java图像处理图片卷积浮雕化,Java图像处理:灰度、二值化、浮雕、去色、反向、怀旧、放大镜等...

图像是由一个个像素点组合而成,图像处理本身实际上是遍历图像的像素点,对像素点的RGB值进行更改,以达到图像处理的目的。接下来,我们主要介绍一下图片转化为二维像素点数组的方法以及部分图像处理如灰度、二值化、浮雕、去色的实现。将图片转化为一个二维像素点数组定义一个方法用来通过图片路径获得图片,并将其拆分为一个二维像素点数组,方便后续对像素点进行处理:public int[][] getImagepix...

weixin_32075603的博客 518

【以太网硬件九】1000base-X是什么?

简要描述1000base-X物理层规范

highman110的博客 1万+

linux内核学习(一)---内核社区介绍及补丁提交

本系列开始会对linux内核进行系统性的学习,以源码与内核社区为基础,了解前沿的内核机制,同时也深度了解linux内核中的一些经典机制 本章会先对linux内核社区进行简单的介绍,包括源码下载、内核社区的修改提交

文艺小少年的博客 536

Android之多种Bitmap效果

原文地址:http://www.cnblogs.com/lee0oo0/archive/2013/12/06/3461392.html Android之多种Bitmap效果 1. 将图片变为圆角 2. 获取缩略图图片 3. LOMO特效 4. 旧时光特效 5. 暖意特效 6. 根据饱和度、色相、亮度调整图片 7. 添加图片外边框 8. 添加内边框 9. 创建一个

A.Wang的专栏 741

【AI产品与商业航图】Flux.1 完全开源 AI 绘图模型:本地部署与 ComfyUI 实战指南

Flux.1是一个开源项目,用户可以自由使用和修改,完全免除使用费用。🖥️本地部署支持:与一些依赖云端计算的工具不同,Flux.1支持本地部署,确保用户可以离线使用并自主控制数据隐私。🔄兼容ComfyUI框架:Flux.1可以无缝集成到ComfyUI中,用户可以享受更加简便和直观的操作界面。🎨卓越的图像生成能力:Flux.1能够生成高质量、细腻的图像,支持多种风格与创作主题的切换。💾低硬件要求。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1737

android 图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧,哈哈镜,放大镜

转载文章请注明出处:http://blog.youkuaiyun.com/dangxw_/article/details/25063673 前些天在github上得到一个关于图像处理的源码(地址找不到了),挺全面,闲了分享一下。感谢开源。 对于图片的反转,倾斜,缩放之类的操作就不提了,网上太多了。大多都是用的Matrix现成方法。 原图: 一:圆角处理 效果:

hewence1的专栏 1999

用Python实现辅助病案首页主诊断编码:从数据清洗到模型上线(上)

本文介绍了一个使用Python构建AI辅助病案首页主诊断编码系统的完整指南。文章从环境搭建开始,详细讲解了数据准备与清洗策略,包括数据格式标准化、文本清洗与脱敏处理等关键步骤。系统采用深度学习技术处理复杂的医疗文本,解决ICD编码面临的文本复杂性、专业性和数据不一致性等挑战。文中提供了完整的代码实现,涵盖数据预处理、敏感信息脱敏、文本分割等实用功能模块,帮助医疗机构构建可落地、可扩展的智能编码系统,提高编码准确性和工作效率。

AllenLV的博客 924

BMP280气压传感器原理图设计,已量产(压力传感器)

做嵌入式项目时,“小而精” 的传感器模块永远是刚需 —— 尤其是需要同时测气压和温度的场景,比如无人机定高、环境监测节点、穿戴设备等。最近捣鼓了一款 BMP280 的 Breakout 板,封装做得很紧凑,同时兼顾了稳定性和兼容性,这里单聊硬件设计细节。

不脱发的程序猿 300

android 图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧,哈哈镜,放大镜)...

http://blog.youkuaiyun.com/dangxw_/article/details/25063673

weixin_33725722的博客 156

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧)...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34320724的博客 148

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android 图片特效处理:drawBitmapMesh——图像扭曲+动感

最近学了好多绘图啊,图片处理啊之类的,想着学全面一点,就又研究了一下drawBitmapMesh,drawBitmapMesh也是在Canvas画布上进行使用的,它具有能够使图片扭曲变形的效果,感觉有点像哈哈镜,只不过哈哈镜是直接照出来的效果,而drawBitmapMesh是通过改变它所有点的坐标位置改变图像的。drawBitmapMesh核心原理  我们使用drawBitmapMesh是通过这行代

danfengw的博客 8864

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android使用drawBitmapMesh方法实现旗帜飞扬,舞动的图片效果

Android使用drawBitmapMesh方法实现旗帜飞扬,舞动的图片效果

喜欢夜深人静街道上的风的博客 495

android 照片变油画,最近很火照片变油画Glaze软件

最近很火照片变油画Glaze软件是一款非常好用的手机油画效果p图工具,可以很好地处理我们的图片,让我们的图片变得更加的漂亮和有艺术的气息,可快速生成自己喜欢的风格的画作,Glaze滤镜非常智能完美。软件使用完全免费而且非常的简单吗,只需要一键就可以完成,感兴趣的朋友赶紧下载最近很火照片变油画Glaze软件开始使用吧!最近很火照片变油画Glaze软件介绍Glaze app是一款非常有创意的釉面滤镜相...

weixin_29038537的博客 3370

Android 实现镜像效果

一、解析 1、首先定义两张图片: Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.mm3); 第二张根据第一张生成 Bitmap modBm = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), bm.getConfig());2、以生成的第二张图片做画

lovoo的博客 8899

android 实现磨砂效果_Android上如何做出毛玻璃模糊的效果?

上图展示了一种很典型的视觉效果——文字的背景不再是固定的,而是将底层的相应区域模糊化,好似盖了一层毛玻璃。其原理也很简单,分为三步走:获取底层的view的Bitmap——b1将b1模糊化,保存为b2把b2设为文字的背景。里面涉及到的技术点有两个:何时访问能获取到底层view的完整Bitmap?如何模糊化,该采用什么算法?技术点一:何时访问能获取到底层view的完整Bitmap?ViewTreeOb...

weixin_42393245的博客 1546

android图片翻转镜像

效果图如下:                      重点代码:canvas.translate(0, image.getHeight());//垂直移动view的高度 canvas.scale(1f, -1f);//图像垂直翻转 import android.content.Context; import android.graphics.Canvas; import and

zhuimengandyue的专栏 4240
上一篇: 关于安卓反编译的几种方式(初识)
下一篇: 小程序的生命周期
Crcker
博客等级 码龄10年 17粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值