当前位置: 首页 > news >正文

小学生做甜品的网站striking wordpress

小学生做甜品的网站,striking wordpress,用电脑建立网站,微网站开发费用内存法通过把图像储存在内存中进行处理#xff0c;效率大大高于GetPixel方法#xff0c;安全性高于指针法。 笔者当初写图像处理的时候发现网上多是用GetPixel方法实现#xff0c;提到内存法的时候也没有具体实现#xff0c;所以笔者在这里具体实现一下- -#xff0c;望指… 内存法通过把图像储存在内存中进行处理效率大大高于GetPixel方法安全性高于指针法。 笔者当初写图像处理的时候发现网上多是用GetPixel方法实现提到内存法的时候也没有具体实现所以笔者在这里具体实现一下- -望指正。 首先讲一下用到的一些方法。 1.LockBits和UnlockBits使用 LockBits 方法可在系统内存中锁定现有的位图以便通过编程方式进行更改每调用LockBits之后都应该调用一次UnlockBits。 2.Scan0图像的第一个字节地址。 3.Stride步幅扫描宽度形象的说就是一行的长度。 4.PixelFormat数据的实际像素格式。 给出原图   一、灰度 对每个像素点进行加权平均方法不唯一。 /// summary/// 灰化实现方法/// /summaryvoid Image_Ashing(){if (pbshowbox.Image ! null){int Height this.pbshowbox.Image.Height;int Width this.pbshowbox.Image.Width;Bitmap bitmap new Bitmap(Width, Height, PixelFormat.Format24bppRgb);Bitmap MyBitmap (Bitmap)this.pbshowbox.Image;BitmapData oldData MyBitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);BitmapData newData bitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);unsafe{byte* pin (byte*)(oldData.Scan0.ToPointer());byte* pout (byte*)(newData.Scan0.ToPointer());for (int y 0; y oldData.Height; y){for (int x 0; x oldData.Width; x){byte Result (byte)(pin[0] * 0.1 pin[1] * 0.2 pin[2] * 0.7);//加权平均实现灰化pout[0] (byte)(Result);pout[1] (byte)(Result);pout[2] (byte)(Result);pin pin 3;pout pout 3;}pin oldData.Stride - oldData.Width * 3;pout newData.Stride - newData.Width * 3;}bitmap.UnlockBits(newData);MyBitmap.UnlockBits(oldData);this.pbshowbox.Image bitmap;}}else{MessageBox.Show(请先打开一张图片);}} 二、柔化 像素点与周围像素点差别较大时取平均值。 /// summary/// 柔化实现方法/// /summaryvoid Image_Soften(){if (pbshowbox.Image ! null){int Height this.pbshowbox.Image.Height;int Width this.pbshowbox.Image.Width;Bitmap bitmap new Bitmap(Width, Height, PixelFormat.Format32bppRgb);Bitmap MyBitmap (Bitmap)this.pbshowbox.Image;BitmapData oldData MyBitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb);BitmapData newData bitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb);unsafe{byte* pin (byte*)(oldData.Scan0.ToPointer());byte* pout (byte*)(newData.Scan0.ToPointer());//高斯模板int[] Gauss { 1, 2, 1, 2, 4, 2, 1, 2, 1 };for (int i 1; i Width - 1; i){for (int j 1; j Height - 1; j){int r 0, g 0, b 0;int Index 0;for (int col -1; col 1; col){for (int row -1; row 1; row){int off ((j row) * (Width) (i col)) * 4;r pin[off 0] * Gauss[Index];g pin[off 1] * Gauss[Index];b pin[off 2] * Gauss[Index];Index;}}r / 16;g / 16;b / 16;//处理颜色值溢出if (r 0) r 0;if (r 255) r 255;if (g 0) g 0;if (g 255) g 255;if (b 0) b 0;if (b 255) b 255;int off2 (j * Width i) * 4;pout[off2 0] (byte)r;pout[off2 1] (byte)g;pout[off2 2] (byte)b;}}bitmap.UnlockBits(newData);MyBitmap.UnlockBits(oldData);this.pbshowbox.Image bitmap;}}else{MessageBox.Show(请先打开一张图片);}} 三、锐化 突出显示颜色值大的像素点。 /// summary/// 锐化实现方法显示数值最大像素点/// /summaryvoid Image_Sharpen(){if (this.pbshowbox.Image ! null){int Height this.pbshowbox.Image.Height;int Width this.pbshowbox.Image.Width;Bitmap bitmap new Bitmap(Width, Height, PixelFormat.Format32bppRgb);Bitmap MyBitmap (Bitmap)this.pbshowbox.Image;BitmapData oldData MyBitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb);BitmapData newData bitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb);unsafe{byte* pin (byte*)(oldData.Scan0.ToPointer());byte* pout (byte*)(newData.Scan0.ToPointer());//拉普拉斯模板int[] Laplacian { -1, -1, -1, -1, 9, -1, -1, -1, -1 };for (int i 1; i Width - 1; i){for (int j 1; j Height - 1; j){int r 0, g 0, b 0;int Index 0;for (int col -1; col 1; col){for (int row -1; row 1; row){int off ((j row) * (Width) (i col)) * 4;r pin[off 0] * Laplacian[Index];g pin[off 1] * Laplacian[Index];b pin[off 2] * Laplacian[Index];Index;}}if (r 0) r 0;if (r 255) r 255;if (g 0) g 0;if (g 255) g 255;if (b 0) b 0;if (b 255) b 255;int off2 (j * Width i) * 4;pout[off2 0] (byte)r;pout[off2 1] (byte)g;pout[off2 2] (byte)b;}}bitmap.UnlockBits(newData);MyBitmap.UnlockBits(oldData);this.pbshowbox.Image bitmap;}}else{MessageBox.Show(请先打开一张图片);}} 四、浮雕 对图像像素点的像素值分别与相邻像素点的像素值相减后加上128, 然后将其作为新的像素点的值。 /// summary/// 浮雕实现方法/// /summaryvoid Image_Relief(){if (this.pbshowbox.Image ! null){int Height this.pbshowbox.Image.Height;int Width this.pbshowbox.Image.Width;Bitmap bitmap new Bitmap(Width, Height, PixelFormat.Format24bppRgb);Bitmap MyBitmap (Bitmap)this.pbshowbox.Image;BitmapData oldData MyBitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);BitmapData newData bitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);unsafe{byte* pin_1 (byte*)(oldData.Scan0.ToPointer());byte* pin_2 pin_1 (oldData.Stride); byte* pout (byte*)(newData.Scan0.ToPointer());for (int y 0; y oldData.Height - 1; y){for (int x 0; x oldData.Width; x){ int b (int)pin_1[0] - (int)pin_2[0] 128;int g (int)pin_1[1] - (int)pin_2[1] 128;int r (int)pin_1[2] - (int)pin_2[2] 128;if (r 0) r 0;if (r 255) r 255;if (g 0) g 0;if (g 255) g 255;if (b 0) b 0;if (b 255) b 255;pout[0] (byte)(b);pout[1] (byte)(g);pout[2] (byte)(r);pin_1 pin_1 3;pin_2 pin_2 3;pout pout 3; }pin_1 oldData.Stride - oldData.Width * 3;pin_2 oldData.Stride - oldData.Width * 3;pout newData.Stride - newData.Width * 3;}bitmap.UnlockBits(newData);MyBitmap.UnlockBits(oldData);this.pbshowbox.Image bitmap;}}else{MessageBox.Show(请先打开一张图片);}} 五、底片 颜色值取反。 /// summary/// 底片实现方法/// /summaryvoid Image_Negative(){if (pbshowbox.Image ! null){int Height this.pbshowbox.Image.Height;int Width this.pbshowbox.Image.Width;Bitmap bitmap new Bitmap(Width, Height, PixelFormat.Format24bppRgb);Bitmap MyBitmap (Bitmap)this.pbshowbox.Image;BitmapData oldData MyBitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);BitmapData newData bitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);unsafe{byte* pin (byte*)(oldData.Scan0.ToPointer());byte* pout (byte*)(newData.Scan0.ToPointer());for (int y 0; y oldData.Height; y){for (int x 0; x oldData.Width; x){pout[0] (byte)(255 - pin[0]);pout[1] (byte)(255 - pin[1]);pout[2] (byte)(255 - pin[2]);pin pin 3;pout pout 3;}pin oldData.Stride - oldData.Width * 3;pout newData.Stride - newData.Width * 3;}bitmap.UnlockBits(newData);MyBitmap.UnlockBits(oldData);this.pbshowbox.Image bitmap;}}else{MessageBox.Show(请先打开一张图片);}} 六、积木 低像素置0高像素置255。 /// summary/// 积木实现方法/// /summaryprivate void Image_Block(){if (this.pbshowbox.Image ! null){int Height this.pbshowbox.Image.Height;int Width this.pbshowbox.Image.Width;Bitmap bitmap new Bitmap(Width, Height);Bitmap Mybitmap (Bitmap)this.pbshowbox.Image;BitmapData oldData Mybitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);BitmapData newData bitmap.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);unsafe{byte* pin (byte*)(oldData.Scan0.ToPointer());byte* pout (byte*)(newData.Scan0.ToPointer());for (int y 0; y oldData.Height; y){for (int x 0; x oldData.Width; x){int avg (pin[0] pin[1] pin[2]) / 3;if (avg 128){pout[0] 255;pout[1] 255;pout[2] 255;}else{pout[0] 0;pout[1] 0;pout[2] 0;}pin pin 3;pout pout 3;}pin pin oldData.Stride - oldData.Width * 3;pout pout newData.Stride - newData.Width * 3;}bitmap.UnlockBits(newData);Mybitmap.UnlockBits(oldData);this.pbshowbox.Image bitmap;}}else{MessageBox.Show(请先打开一张图片);}} 有些图片效果看起来不明显是因为笔者把图缩小了其实效果挺明显的- -。   转载于:https://www.cnblogs.com/zjc0202/p/4398605.html
http://www.pierceye.com/news/168946/

相关文章:

  • 建设网站都要学些什么网站开发承包合同
  • 网站搭建好了怎么上到服务器好看wordpress主题
  • 免费自己制作网站教程网站文字格式
  • 模板建站教程网站建设公司特色
  • 广州网站设计制作江门住房与城乡建设局官方网站
  • 电子商城网站建设参考文献新手建立企业网站流程
  • 站长工具使用wordpress搜索框制作教程
  • 上海翼成信息科技有限公司做的什么网站怎么办一个网站
  • 上海网站建设的英文wordpress login 图标
  • 雅安市网站建设搭建网站工具
  • 网站如何做301重定向南宁一站网 给网站做营销
  • 网站 使用的字体女生电子商务专业适合做什么
  • 电商网站首页模板连云港 网站 建设
  • 自助建站广告发布企业年检网上申报流程
  • 河北平台网站建设价位外包网站有哪些
  • 做网站客户需要提供的资料梧州网站建设推荐
  • 网站商城建设实训心得网络推广有用吗
  • 考试网站建设房价2024年暴跌
  • 北京网站seo价格建设教育培训的网站
  • 怎样做网站手机和电脑通用木马工业设计公司
  • 榆林市建设局官方网站ppt中网站布局图怎么做
  • 网站视频插件代码如何创建自己的软件
  • 如何免费建造网站电商网站建设哪家好
  • ps做网站首页设计教程郑州seo优化外包热狗网
  • 给网站增加功能怎么做360搜索关键词优化软件
  • 如何做公司网站空间南昌做网站的公司哪个比较好的
  • 美容网站开发网络营销的功能有哪些
  • 推广自己的网站需要怎么做做政协网站的目的是什么
  • 综合性电子商务网站有哪些商城系统软件开发
  • 网站服务器解决方案企业门户网站管理要求