用一个全局变量保存这个1.jpg,如变量a,你按按钮2时,可以简单的在a中插入一个"A",如a.SubString(0, a.Length-4) "A" a.SubString(a.Length-4),这样就能把例如"C:/Images/1.jpg"变成"C:/Images/1A.jpg"
专注于为中小企业提供网站建设、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业息烽免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
理论上,应该可以实现。因为,不管是使用什么编程语言,终究都是调用 Windows 相关的图形处理函数的 API 函数。所以能否做到,更多地取决于图形处理的算法。最关键的是掌握从图片中识别出文字的算法,这属于模式识别领域的知识。
一个颜色值可以拆分成 RGB 三部分;两个颜色值比较就是两组 RGB 比较,如果 RGB 各自的差值都小于某个粒度,就可以认为相似。
IO.Directory.GetFiles
获取指定目录中的所有文件,比对文件名就行了。如果包括多层子目录,需要递归
具体应该用到模糊判别。是一个比较专业的问题,你在这里提出应该没有人能回答你。
应用图像聚类.我们知道,彩色图像的数据可以看成一M*N*3的数组,但是一方面三维数组的处理速度要低于一维或二维数组,因此,用二维数组来描述要分割的对象不仅意义明显而且有利于计算速度的提高。图像数据在内存中的排列方式是BGRABRGABGRA.......(32位的),这样,通过API函数直接读取的数据一般为一(1 to 4,1 to M*N)数组,
如果想快速判别两个图片是否相同,可用如下方法:
Public Enum CompareResult
ciCompareOk
ciPixelMismatch
ciSizeMismatch
End Enum
Public Shared Function Compare(ByVal bmp1 As Bitmap, ByVal bmp2 As Bitmap) As CompareResult
'首先检查两副图片大小是否完全相等
If Not bmp1.Size.Equals(bmp2.Size) Then
Return CompareResult.ciSizeMismatch
Else
'把每个图片转成一字节数组
Dim ic As New System.Drawing.ImageConverter
Dim btImage1(1) As Byte
btImage1 = CType(ic.ConvertTo(bmp1, btImage1.GetType()), Byte())
Dim btImage2(1) As Byte
btImage2 = CType(ic.ConvertTo(bmp2, btImage2.GetType()), Byte())
Debug.WriteLine(UBound(btImage1))
'计算每个图片的hash值
Dim shaM As New SHA256Managed
Dim hash1 As Byte() = shaM.ComputeHash(btImage1)
Dim hash2 As Byte() = shaM.ComputeHash(btImage2)
'比较hash值
Dim i As Integer
For i = 0 To Math.Min(hash1.Length, hash2.Length) - 1
If hash1(i) hash2(i) Then
Return CompareResult.ciPixelMismatch
End If
Next
End If
Return CompareResult.ciCompareOk
End Function
当然这种方法存在缺陷,实际情况下,很多图片都经过JPEG等有损压缩,即使是同一张图片用不同的压缩参数得到的结果hash结果也完全不同。这种办法还是有一定限制的
思路如下:
得到图片文件夹路径里所有图片的文件名。
对这些文件名进行判断,是否包含你所谓的模糊的文字。
当判断发现包含时,就复制对应的图片到你想到的对应的目录。