日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

【C#】三维立体验证码 (3DCaptcha)

發布時間:2025/3/21 C# 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C#】三维立体验证码 (3DCaptcha) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本技術來源:

3DCaptcha http://www-personal.umich.edu/~mressl/3dcaptcha/

下載地址 http://code.google.com/p/3dcaptcha/

官方LOGO

?

本例完全由此樣例程序翻譯而來,未作任何附加處理.

以下是C#對此算法的實現

/** 3DCaptcha for .net* * http://www-personal.umich.edu/~mressl/3dcaptcha/ (php)* http://code.google.com/p/3dcaptcha/ (php)* * Translate : Aimeast* Blog : http://www.cnblogs.com/Aimeast/*/using System; using System.Drawing;namespace Captcha {public static class Captcha{private static double[] addVector(double[] a, double[] b){return new double[] { a[0] + b[0], a[1] + b[1], a[2] + b[2] };}private static double[] scalarProduct(double[] vector, double scalar){return new double[] { vector[0] * scalar, vector[1] * scalar, vector[2] * scalar };}private static double dotProduct(double[] a, double[] b){return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];}private static double norm(double[] vector){return Math.Sqrt(dotProduct(vector, vector));}private static double[] normalize(double[] vector){return scalarProduct(vector, 1.0 / norm(vector));}// http://en.wikipedia.org/wiki/Cross_productprivate static double[] crossProduct(double[] a, double[] b){return new double[] {(a[1] * b[2] - a[2] * b[1]),(a[2] * b[0] - a[0] * b[2]),(a[0] * b[1] - a[1] * b[0])};}private static double[] vectorProductIndexed(double[] v, double[] m, int i){return new double[]{v[i + 0] * m[0] + v[i + 1] * m[4] + v[i + 2] * m[8] + v[i + 3] * m[12],v[i + 0] * m[1] + v[i + 1] * m[5] + v[i + 2] * m[9] + v[i + 3] * m[13],v[i + 0] * m[2] + v[i + 1] * m[6] + v[i + 2] * m[10]+ v[i + 3] * m[14],v[i + 0] * m[3] + v[i + 1] * m[7] + v[i + 2] * m[11]+ v[i + 3] * m[15]};}private static double[] vectorProduct(double[] v, double[] m){return vectorProductIndexed(v, m, 0);}private static double[] matrixProduct(double[] a, double[] b){double[] o1 = vectorProductIndexed(a, b, 0);double[] o2 = vectorProductIndexed(a, b, 4);double[] o3 = vectorProductIndexed(a, b, 8);double[] o4 = vectorProductIndexed(a, b, 12);return new double[]{o1[0], o1[1], o1[2], o1[3],o2[0], o2[1], o2[2], o2[3],o3[0], o3[1], o3[2], o3[3],o4[0], o4[1], o4[2], o4[3]};}// http://graphics.idav.ucdavis.edu/education/GraphicsNotes/Camera-Transform/Camera-Transform.htmlprivate static double[] cameraTransform(double[] C, double[] A){double[] w = normalize(addVector(C, scalarProduct(A, -1)));double[] y = new double[] { 0, 1, 0 };double[] u = normalize(crossProduct(y, w));double[] v = crossProduct(w, u);double[] t = scalarProduct(C, -1);return new double[]{u[0], v[0], w[0], 0,u[1], v[1], w[1], 0,u[2], v[2], w[2], 0,dotProduct(u, t), dotProduct(v, t), dotProduct(w, t), 1};}// http://graphics.idav.ucdavis.edu/education/GraphicsNotes/Viewing-Transformation/Viewing-Transformation.htmlprivate static double[] viewingTransform(double fov, double n, double f){fov *= (Math.PI / 180);double cot = 1.0 / Math.Tan(fov / 2);return new double[]{cot, 0, 0, 0,0, cot, 0, 0, 0, 0, (f + n) / (f - n), -1,0, 0, 2 * f * n / (f - n), 0};}public static Image Generate(string captchaText){Random rnd = new Random();// 3dcha parametersint fontsize = 24;Font font = new Font("Arial", fontsize);SizeF sizeF;using (Graphics g = Graphics.FromImage(new Bitmap(1, 1))){sizeF = g.MeasureString(captchaText, font, 0, StringFormat.GenericDefault);}int image2d_x = (int)sizeF.Width;int image2d_y = (int)(fontsize * 1.3);double bevel = 4;// Create 2d imageBitmap image2d = new Bitmap(image2d_x, image2d_y);Color black = Color.Black;Color white = Color.White;// Paint 2d imageusing (Graphics g = Graphics.FromImage(image2d)){g.Clear(black);g.DrawString(captchaText, font, Brushes.White, 0, 0);}// Calculate projection matrixdouble[] T = cameraTransform(new double[] { rnd.Next(-90, 90), -200, rnd.Next(150, 250) },new double[] { 0, 0, 0 });T = matrixProduct(T,viewingTransform(60, 300, 3000));// Calculate coordinatesdouble[][] coord = new double[image2d_x * image2d_y][];int count = 0;for (int y = 0; y < image2d_y; y += 2){for (int x = 0; x < image2d_x; x++){// calculate x1, y1, x2, y2int xc = x - image2d_x / 2;int zc = y - image2d_y / 2;double yc = -(double)(image2d.GetPixel(x, y).ToArgb() & 0xff) / 256 * bevel;double[] xyz = new double[] { xc, yc, zc, 1 };xyz = vectorProduct(xyz, T);coord[count] = xyz;count++;}}// Create 3d imageint image3d_x = 256;//$image3d_y = $image3d_x / 1.618;int image3d_y = image3d_x * 9 / 16;Bitmap image3d = new Bitmap(image3d_x, image3d_y);Color fgcolor = Color.White;Color bgcolor = Color.Black;using (Graphics g = Graphics.FromImage(image3d)){g.Clear(bgcolor);count = 0;double scale = 1.75 - (double)image2d_x / 400;for (int y = 0; y < image2d_y; y += 2){for (int x = 0; x < image2d_x; x++){if (x > 0){double x0 = coord[count - 1][0] * scale + image3d_x / 2;double y0 = coord[count - 1][1] * scale + image3d_y / 2;double x1 = coord[count][0] * scale + image3d_x / 2;double y1 = coord[count][1] * scale + image3d_y / 2;g.DrawLine(new Pen(fgcolor), (float)x0, (float)y0, (float)x1, (float)y1);}count++;}}}return image3d;}} }

使用方法

this.BackgroundImage = Captcha.Generate("Code");

效果截圖

轉載于:https://www.cnblogs.com/Aimeast/archive/2011/05/02/2034525.html

總結

以上是生活随笔為你收集整理的【C#】三维立体验证码 (3DCaptcha)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一区电影 | 日韩欧美精品在线 | 日日操天天操 | 亚洲精品尤物 | 国产午夜性春猛交ⅹxxx | 亚洲天堂久 | 一本色道久久综合亚洲二区三区 | 中文乱码人妻一区二区三区视频 | 欧美日韩午夜爽爽 | 久色视频在线观看 | 亚洲乱码国产乱码精品精的特点 | 精品人妻一区二区三 | 日韩av男人天堂 | 欧美两根一起进3p做受视频 | 好吊色一区二区三区 | 男人的网站在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 中文字幕日韩欧美一区二区 | 天堂在线免费观看视频 | 超碰在线影院 | 亚洲国产第一区 | 国产18p| 亚洲av无码国产在丝袜线观看 | 天堂网在线最新版www中文网 | 哈利波特3在线观看免费版英文版 | 中文字幕在线免费观看视频 | 99热这里只有精品7 青青草社区 | 色婷五月天 | 欧美午夜一区二区三区 | 国产一区二区三区四区视频 | 明日花绮罗高潮无打码 | 福利一区三区 | 99蜜桃臀久久久欧美精品网站 | 日本不卡不卡 | 91中文字幕在线观看 | 免费成人黄色网址 | 丁香婷婷激情五月 | 日韩夜夜高潮夜夜爽无码 | 亚洲精品综合在线 | 国产高清视频在线播放 | 中文字幕亚洲欧美日韩在线不卡 | 日干夜干 | 一级小毛片 | 韩日一区二区三区 | 欧美男人又粗又长又大 | 最近最好的2019中文 | 99在线精品视频免费观看20 | 三级麻豆 | 精品日韩一区二区三区四区 | 国产视频福利在线观看 | 小嫩嫩12欧美 | 骚狐网站| 欧美不卡三区 | 日本不卡一区在线 | 亚洲第一免费视频 | 国产不卡av在线播放 | 亚洲天堂第一区 | 成年人网站在线免费观看 | 欧美性猛交ⅹ乱大交3 | 最新国产在线视频 | 进去里视频在线观看 | 20日本xxxxxxxxx46| 欧美日韩一区二区区别是什么 | 三上悠亚影音先锋 | 亚洲天堂手机版 | 国产v亚洲v天堂无码久久久 | 免费人成在线观看网站 | 久久久久久一区二区三区 | 色香色香欲天天天影视综合网 | 一区二区三区日韩精品 | 欧美成人一区二区 | 免费网站在线观看人数在哪动漫 | 国产精品成人国产乱一区 | 亚洲av综合色区无码一区 | 国产在线一级片 | 日本a在线| 波多野结衣在线视频播放 | 日韩电影在线一区 | 午夜色播| 久久香蕉国产 | 国产一卡二卡三卡 | 久久久久一区二区 | 性高潮久久久久 | 新久草视频 | 日本系列第一页 | 精品黄网 | 一区二区三区播放 | 成人18视频在线观看 | 51成人精品网站 | 高清av不卡 | 欧美乱妇日本无乱码特黄大片 | 狠狠躁18三区二区一区传媒剧情 | 日本一区二区高清不卡 | 日韩精品在线免费观看 | 久本草精品 | 亚洲孕交| 亚洲精品动漫在线观看 | 黑人巨大精品欧美一区二区免费 | 天天色天天综合 |