C#怎么验证两个QQ头像相似度
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了C#怎么验证两个QQ头像相似度的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#怎么验证两个QQ头像相似度文章都会有所收获,下面我们一起来看看吧。利用c
千家信息网最后更新 2026年10月31日C#怎么验证两个QQ头像相似度
这篇文章主要介绍了C#怎么验证两个QQ头像相似度的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#怎么验证两个QQ头像相似度文章都会有所收获,下面我们一起来看看吧。
利用c#查看出某个其他qq的头像与自己头像的相似度,先看效果图
这里我是将左边的头像作为比对的基本图,我目前做的是一图比对一图,因为理解好了一对一,一对多也不难,我们可以得出相似的像素,然后大于多少百分比就是同一图的改变了,以下是完整代码
using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.IO;using System.Linq;using System.Net;using System.Net.Http;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace WindowsFormsApp1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } public static int width; //图片宽 public static int height;//图片高 public static string mypicurl;//我的图片地址 public static string picurl;//图片地址 private void Form1_Load(object sender, EventArgs e) { this.MyPicture.SizeMode = PictureBoxSizeMode.StretchImage; this.MyPicture.BorderStyle = BorderStyle.FixedSingle; this.OtherPicture.SizeMode = PictureBoxSizeMode.StretchImage; this.OtherPicture.BorderStyle = BorderStyle.FixedSingle; this.explain.Text = "操作步骤:左边输入自己qq号查看显示,右边输入别人qq号,点击查看,点击验证,得出结果。"; } private void button2_Click(object sender, EventArgs e) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); int countSame = 0; int countDifferent = 0; Image img = this.MyPicture.Image; Bitmap bitmapSource = new Bitmap(img); //Bitmap bitmapSource = BytesToBitmap(ResizeImage(mypicurl)); width = bitmapSource.Width; height = bitmapSource.Height; Bitmap bitmapTarget = BytesToBitmap(ResizeImage(picurl)); //照片尺寸必须一样 for (int i = 0; i < bitmapTarget.Width; i++) { for (int j = 0; j < bitmapTarget.Height; j++) { if (bitmapSource.GetPixel(i, j).Equals(bitmapTarget.GetPixel(i, j))) { countSame++; } else { countDifferent++; } } } stopwatch.Stop(); this.result.Text = "相同像素个数:" + countSame + ",不同像素个数:" + countDifferent + "用时:" + stopwatch.ElapsedMilliseconds + " 毫秒"; } //byte[] 转图片 public static Bitmap BytesToBitmap(byte[] Bytes) { MemoryStream stream = null; try { stream = new MemoryStream(Bytes); return new Bitmap((Image)new Bitmap(stream)); } catch (ArgumentNullException ex) { throw ex; } catch (ArgumentException ex) { throw ex; } finally { stream.Close(); } } /// /// 图片大小裁剪 /// /// /// public static byte[] ResizeImage(string filePath) { WebRequest request = (WebRequest)HttpWebRequest.Create(filePath); WebResponse response = request.GetResponse(); using (Stream stream = response.GetResponseStream()) { Bitmap bm = (Bitmap)Image.FromStream(stream); bm = GetThumbnail(bm, height, width); MemoryStream ms = new MemoryStream(); bm.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); byte[] bytes = ms.GetBuffer(); //byte[] bytes= ms.ToArray(); 这两句都可以,至于区别么,下面有解释 ms.Close(); return bytes; } } /// /// 修改图片的大小 /// /// /// /// /// public static Bitmap GetThumbnail(Bitmap b, int destHeight, int destWidth) { System.Drawing.Image imgSource = b; System.Drawing.Imaging.ImageFormat thisFormat = imgSource.RawFormat; int sW = 0, sH = 0; // 按比例缩放 int sWidth = imgSource.Width; int sHeight = imgSource.Height; if (sHeight > destHeight || sWidth > destWidth) { if ((sWidth * destHeight) > (sHeight * destWidth)) { sW = destWidth; sH = (destWidth * sHeight) / sWidth; } else { sH = destHeight; sW = (sWidth * destHeight) / sHeight; } } else { sW = sWidth; sH = sHeight; } Bitmap outBmp = new Bitmap(destWidth, destHeight); Graphics g = Graphics.FromImage(outBmp); g.Clear(Color.Transparent); // 设置画布的描绘质量 g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(imgSource, new Rectangle((destWidth - sW) / 2, (destHeight - sH) / 2, sW, sH), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel); g.Dispose(); // 以下代码为保存图片时,设置压缩质量 EncoderParameters encoderParams = new EncoderParameters(); long[] quality = new long[1]; quality[0] = 100; EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); encoderParams.Param[0] = encoderParam; imgSource.Dispose(); return outBmp; } private void button3_Click(object sender, EventArgs e) { if (this.OtherQQ.Text == "") { MessageBox.Show("请输入qq号!"); return; } HttpClient httpClient = new HttpClient(); string url = "https://api.usuuu.com/qq/" + this.OtherQQ.Text; var rsp = httpClient.GetAsync(url).Result; var str = rsp.Content.ReadAsStringAsync().Result; JObject jo = (JObject)JsonConvert.DeserializeObject(str); if ((string)jo["code"] == "200") { Image pic = Image.FromStream(WebRequest.Create((string)jo["data"]["avatar"]).GetResponse().GetResponseStream()); this.OtherPicture.Image = pic; picurl = (string)jo["data"]["avatar"]; } else { MessageBox.Show("请输入正确的qq号!"); } } private void button4_Click(object sender, EventArgs e) { if (this.MyQQ.Text == "") { MessageBox.Show("请输入qq号!"); return; } HttpClient httpClient = new HttpClient(); string url = "https://api.usuuu.com/qq/" + this.MyQQ.Text; var rsp = httpClient.GetAsync(url).Result; var str = rsp.Content.ReadAsStringAsync().Result; JObject jo = (JObject)JsonConvert.DeserializeObject(str); if ((string)jo["code"] == "200") { Image pic = Image.FromStream(WebRequest.Create((string)jo["data"]["avatar"]).GetResponse().GetResponseStream()); this.MyPicture.Image = pic; mypicurl = (string)jo["data"]["avatar"]; } else { MessageBox.Show("请输入正确的qq号!"); } } }}关于"C#怎么验证两个QQ头像相似度"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"C#怎么验证两个QQ头像相似度"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
图片
头像
相似
输入
验证
两个
C#
像素
知识
个数
代码
内容
地址
大小
篇文章
质量
不同
相同
一对一
价值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
疫情对互联网科技公司影响
河南真二互联网科技有限公司
互联网金融 科技
融势互联网科技
沃里互联网科技
米客互联网科技
碳银互联网科技有限公司
互联网科技英文翻译
互联网科技有限公司 翻译
互联网科技大会案例
互联网科技股午盘股票涨跌
互联网公司会议桌创意科技软装饰
互联网科技商业
互联网科技和信息
广州新华互联网科技学校电竞方面
爱医互联网络科技
互联网时代的科技公司
国大互联网教育科技有限公司薪资
伍佰万互联网科技怎么赚钱
美国五大互联网科技公司市值多少
上海互联网科技有限公司
北京互联网科技公司
互联网与未来科技
互联网科技排名
互联网教育科技公司vipkid
众安科技工业互联网合作
互联网领先科技宣传片
上海互联网科技公司ppt
互联网科技新闻
保山互联网科技靠谱吗