• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > c#高效比对大量图片的实例代码

c#高效比对大量图片的实例代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#web开发实例,c#串口编程实例,c#窗口界面设计实例,c#实例视频教程,c#项目实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

以前传统的比较方式是遍历图片中的每一个像素,然后进行比对。这样的比对在少量图片的比对上虽然效率低一点,但是也没有什么不好。但是在大量图片比对的时候,过长的反应时间和对服务器比较高的消耗肯定是不行的。

  所以微软给我们提供了另外一种比对的方法,能够正确,高效的比对出两张图片的是否相同。这种方法的原理是:将图片保存到数据流中然后使用Convert.ToBase64String将数据流转换为字符串,那么我们只需要比对两张图片的字符串就ok了。代码如下:

            string img1 = Convert.ToBase64String(ms1.ToArray());

            Image image2 = Image.FromFile(filePath2);
            image2.Save(ms1, System.Drawing.Imaging.ImageFormat.Jpeg);
            string img2 = Convert.ToBase64String(ms1.ToArray());

            if (img1.Equals(img2))
            {
               return true;
            }
            else
            {
                return false;
            }
        }

</div>

这种方法我使用控制台测试了下时间,时间大概为0.015s左右比较一张图片的时间。还是比较高效的。

大量图片的比较   
比较两张图片能够满足需求,那么大量呢? 我这边也做了这种测试的。在450张图片中,选择出其中重复的图片,并展示出来。大概时间是16s左右,基本能够满足大部分的需求了。

比较方法是,先讲450张图片,全部一次性转换为string类型,存放到一个数组里面,这样就避免了每次循环都要额外的去转换,使程序的效率降低很多。

                    dic["base64"] = imgBase64;
                    dic["imgName"] = fileInfo.Name;
                    liststr.Add(dic);
                }
            }

            return liststr;
        }
</div>

将图片的base64string和图片的名称存储在一个dictionary中,然后存储到list数组中。这样我们在比较的时候,只需要判断两个字符串是否相等就可以了。

            List<Dictionary<string, string>> array3 = (List<Dictionary<string, string>>)bf.Deserialize(ms);  //反序列化
            return array3;
        }

        /// <summary>
        /// 比较图片
        /// </summary>
        /// <param name="listDic"></param>
        /// <param name="filePath"></param>
        /// <returns></returns>
 &n

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#实现文件上传与下载功能实例
  • C#登入实例
  • c#版在pc端发起微信扫码支付的实例
  • C#装箱和拆箱操作实例分析
  • C#实现的一款比较美观的验证码完整实例
  • C#递归方法实现无限级分类显示效果实例
  • c#读取excel方法实例分析
  • C#实现抓取和分析网页类实例
  • C#事件用法实例浅析
  • C#中委托用法实例分析

相关文章

  • 2017-05-28c#实现metro文件压缩解压示例
  • 2017-05-28C# DES加密算法中向量的作用详细解析
  • 2017-05-28C#实现跨线程操作控件方法
  • 2017-05-28基于C#的UDP协议的同步通信实现代码
  • 2017-05-28C#编程实现Excel文档中搜索文本内容的方法及思路
  • 2017-05-28winform实现拖动文件到窗体上的方法
  • 2017-05-28C#中Socket通信用法实例详解
  • 2017-05-28C#使用Selenium+PhantomJS抓取数据
  • 2017-05-28如何使用C#程序给PDF文件添加编辑域
  • 2017-05-28基于c# 类、接口、结构的联系与区别详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 详细解析C#多线程同步事件及等待句柄
    • 使用VS2005自带的混淆器防止你的程序被反编译的方法
    • C#实现程序等待延迟执行的方法
    • c#中合并excel表格的方法示例
    • C#实现用于操作wav声音文件的类实例
    • C#中接口(interface)的理解
    • C#获取Word文档中所有表格的实现代码分享
    • 用C#将图片保存至Oracle BLOB字段中的方法
    • winform简单缓存类实例
    • C#实现根据指定容器和控件名字获得控件的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有