日期:2014-05-18  浏览次数:20840 次

请问有没有办法筛选出同一目录下重复的图片?
最近接到一个CASE,其中有一个功能要能筛选出一个目录中完全相同的重复图片.我以前没有接触过此类功能.特来请教下实现的思路.

PS:好象我们的QQ在保存QQ表情的时候都会提示是否有相同的存在?

------解决方案--------------------
顶~我也正想怎么真正判断两张图片是否完全相同的问题。高手来啊

-----------------------------------------------
msn:bdbox@hotmail.com
请给我个与您交流的机会
------解决方案--------------------
如果判斷名字重復倒好判斷。
如果是判斷圖像内容,用模式識別的模糊識別算法。網上搜搜。
------解决方案--------------------
http://developer.51cto.com/art/200703/42404.htm
------解决方案--------------------
兩張圖片完全相同,包括尺寸,每一點地像素值。
也好判斷。
1:先判斷尺寸
2:循環,比較每一點的像素值
------解决方案--------------------
你如果只是以图片名称为判断条件,那就办,你做个遍历就可以了,看看有没有相同的名字

如果是以图片内容为判断条件,引用楼上的 "首先按照大小排序,然后判断大小,如果大小一致,则开始采样(随机获取相同位置的像素),如果值(RGB)也一样,则可以初步认为是相同的。 "

------解决方案--------------------
1.文件大小是否一样
2.大小一样的直接按字节比较
------解决方案--------------------
学习
------解决方案--------------------
1.按文件大小排序
2.找到文件大小相同的
3.按字节比较相同文件直到出现不同(不同图片),或文件结束(重复图片)
------解决方案--------------------
public bool AreImagesSame(Bitmap image1, Bitmap image2)
{
if (image1.Width != image2.Width || image1.Height != image2.Height)
{
return false;
}
int width=image1.Width;
int height=image1.Height;
Color color1;
Color color2;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
color1 = image1.GetPixel(i, j);
color2 = image2.GetPixel(i, j);
if (!color1.Equals(color2))
{
return false;
}
}
}
return true ;
}


调用:

Bitmap image1 = (Bitmap)Bitmap.FromFile( "jjj.bmp ");
Bitmap image2 = (Bitmap)Bitmap.FromFile( "jjjj.gif ");
Check check = new Check();
AreImagesSame(image1, image2);

可以比较两个图片是否相同.