WPF 查找大小相同文件/图片
假设文件大小一样就表示文件一模一样,是重复文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.IO;
namespace EnhanceImage
{ public partial class FindSamePicWind : Window
{
public FindSamePicWind()
{
InitializeComponent();
List<FileInfo> find = new List<FileInfo>();
//d:\Downloads
string path = @"d:\Downloads";
var files = Directory.GetFiles(path, "*.jpg");
var list = new List<FileInfo>();
foreach (var f in files)
{
FileInfo fi = new FileInfo(f);
list.Add(fi);
}
foreach (var f in list)
{ var all = list.Where(n => n.Length == f.Length);
if (all.Count() > 1)
{
foreach (var item in all)
{
if (!find.Contains(item))
{
find.Add(item);
Console.WriteLine(f.FullName);
var img = new Image() { ToolTip=f.Name, Tag = f.FullName, MaxWidth = 200, Source = LoadImage(f.FullName) };
img.MouseLeftButtonDown += Img_MouseLeftButtonDown;
wrapPanel.Children.Add( img );
}
}
} } } private void Img_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var f = "" + (sender as Image).Tag;
File.Delete(f); wrapPanel.Children.Remove((sender as Image)); } BitmapImage LoadImage(string f) { BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.CacheOption = BitmapCacheOption.OnLoad;
using(MemoryStream ms=new MemoryStream(File.ReadAllBytes(f)))
{
ms.Position = 0;
bmp.StreamSource = ms;// new Uri(f,UriKind.RelativeOrAbsolute); bmp.EndInit();
bmp.Freeze();
} return bmp;
} }
}
XAML:
<Window x:Class="EnhanceImage.FindSamePicWind"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:EnhanceImage"
mc:Ignorable="d"
Title="FindSamePicWind" Height="450" Width="800">
<Grid>
<RichTextBox AcceptsReturn="True" x:Name="txt"></RichTextBox>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<WrapPanel Name="wrapPanel"></WrapPanel>
</ScrollViewer> </Grid>
</Window>
WPF 查找大小相同文件/图片的更多相关文章
- JQuery获取图片大小并控制图片文件上传大小以及上图片文件时如何预览图片
首先我们来看效果图: 点击上传之后如下: 在这里我获取到文件的大小,并且如果超出我设定的大小,则禁止上传! 不多说,上代码:先看div布局: <div class="imageCont ...
- 总结:WPF中ResourceDictionary资源文件的查找和遍历方法
原文:总结:WPF中ResourceDictionary资源文件的查找和遍历方法 一.查找包含制定关键字的资源 ResourceDictionary GetThemeDictionary() ...
- C# WPF Application 下的文件操作
好气哦,电脑好烂,每天花大把的时间在等电脑反应上. 没有钱买新电脑,连组台式机的钱都没有.好气哦. 啊啊啊啊文件操作是什么鬼???C++下我都懵了,C#下好多东西要学!!!我不会!我不会!我不会!!! ...
- WPF中查看PDF文件
需要打开PDF文件时,我们第一印象就是使用Adobe Reader.在开发中,经常会遇到需要展示PDF文件的需求.我们会借助于Adobe Reader的Active控件来实现.不过这需要客户的机器上安 ...
- 【转】使用 lsof 查找打开的文件
在 UNIX® 环境中,文件无处不在,这便产生了一句格言:“任何事物都是文件”.通过文件不仅仅可以访问常规数据,通常还可以访问网络连接和硬件.在有些情况下,当您使用 ls 请求目录清单时,将出现相 ...
- 文本内容查找grep、文件查找find、正则匹配
一.文本内容查找工具 grep grep egrep (文本过滤) fgrep (不支持正则) 对文本的内容按照指定的匹配模式基于行来进行筛选 格式 grep [选项] 模式 文件 选 ...
- WPF GDI+字符串绘制成图片(一)
原文:WPF GDI+字符串绘制成图片(一) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/details/83 ...
- WebUploader文件图片上传插件的使用
最近在项目中用到了百度的文件图片上传插件WebUploader.分享给大家 需要在http://fex.baidu.com/webuploader/download.html点击打开链接下载WebUp ...
- linux生成指定大小的文件(转)
# dd if=/dev/zero of=50M.file bs=1M count=50在当前目录下生成一个50M的文件 虚拟块设备文件更通用的名称是硬盘镜像文件(Hard Disk Image),但 ...
- linux shell 脚本 历史文件清理脚本,按天,按月,清理前N天的历史文件,删除指定大小历史文件,历史文件归档清理
不知道大家那有没有要清理的这个事情.需要清理目录历史文件.可能后续也会有很多其他地方需要清理历史文件,可能会用到. 我这两天空闲写了个脚本,清理比较方便,有要进行清理的大量历史文件的话可以用. 脚本用 ...
随机推荐
- 全中国有多少公网IP地址?
之前为了准备CTF比赛,搞了一个云服务器,顺便申请了一个公网IP. 看着申请到的IP地址,我突然想到了一个问题:不是早就说IP地址已经耗尽了吗,为什么我随便就能申请到,是谁在负责IP地址的管理分配,咱 ...
- 《机器学习实战》(Machine Learning in Action)
地址: https://www.manning.com/books/machine-learning-in-action 代码地址: https://www.manning.com/downloads ...
- chrome标签同步神器插件-集装箱!
前言 最近无法忍受360极速浏览器铺天盖地的广告.也无法忍受火狐浏览器的耗内存打开慢的情况.最终又把浏览器换回了Chrome.总所周知Chrome在国内使用的最大问题是同步书签.扩展等功能受到网络环境 ...
- 干货分享:Air700ECQ的硬件设计,第二部分
接下来分享第二部分. 3.10. 功能管脚 3.10.1. MAIN_RI 管脚名 类型 序号 电压域 作用 MAIN_RI DO 5 LDOAON 振铃信号,唤醒输出管脚,用于唤醒AP 表格 1 ...
- Moebius for SQL Server
Moebius(莫比斯)介绍 Moebius数据库多活集群是格瑞趋势为SQL Server数据库研发的能够同时满足可用性.数据安全.容灾.读写分离.负载均衡的一站式多活集群.集群的名字取自Moebiu ...
- typeScript 安装调试 (一)
一.安装typeScript 首次使用typeScript 可以执行全局安装typeScript 命令 npm i typescript -g 接着输出 tsc -v 查看版本号即可 创建tsconf ...
- PHP之常见问题
汇总在PHP开发中遇到的一些问题 1.post提交参数缺失 场景: 在前端页面发起一个post提交的时候,查看payload中的数据是正常的, 但是在接收的时候,发现只有部分数据,算了一下,包含的数据 ...
- Golang框架之gin
gin是目前golang的主要web框架之一,之所以选择这个框架是因为其拥有高效的路由性能,并且有人长期维护,目前github上的star数已经破3W. [安装] go get -u github.c ...
- Threejs的三维坐标系
在三维空间中,所有的物体和相机都需要基于一个统一的坐标系来进行定位和操作.理解坐标系的基本概念,对于创建稳定.准确的三维效果至关重要. 基础 Three.js 采用的是右手坐标系,这意味着如果你将右手 ...
- c# 添加系统右键菜单(Windows11以前)
今天介绍一下在注册表中添加系统右键菜单实现在文件夹的右键菜单中添加,删除以及查找是否已经添加的方法. 注意这里的方法仅限于Windows11之前使用,Windows11默认的右键菜单已经改变,需要使用 ...