N NeutronDelphi Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-13 #2 这是一个比较复杂的问题, 首先是比较格式BMp,JPEG,PCX,GIF等, 然后再是颜色数,大小尺寸, 再是点的比较了! 我决得有一个很简单的比较方法按照一定的规律在文件中或图片中采(5-9个)样点进行比较 如果相同则人为是相同的, 采样点的个数和采样的位置可根据图型的自身特征来决定!
这是一个比较复杂的问题, 首先是比较格式BMp,JPEG,PCX,GIF等, 然后再是颜色数,大小尺寸, 再是点的比较了! 我决得有一个很简单的比较方法按照一定的规律在文件中或图片中采(5-9个)样点进行比较 如果相同则人为是相同的, 采样点的个数和采样的位置可根据图型的自身特征来决定!
H huazai Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-13 #3 用bitblt函数阿他的帮助里面有一个光栅操作,不过这是建立在大小相同的两幅图上的, 光栅操作中好像有个什么异或,将一幅图贴到另一副图上,如果完全相同这是黑色
A aizb Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-13 #4 首先是比较格式啦,这个不难,用Picture装入并比较Graphic的ClassName就可以了; 然后是比较大小,当然更简单了,比较Picture的Width和Height就行; 如果这两条都通过了,可以用以下的方法,如果都是Bitmap,则可以通Scanline来比较,很快; 如果不是,你可以创建两个内存流并将Graphic保存到内存流中并比较其中的每个字节.
首先是比较格式啦,这个不难,用Picture装入并比较Graphic的ClassName就可以了; 然后是比较大小,当然更简单了,比较Picture的Width和Height就行; 如果这两条都通过了,可以用以下的方法,如果都是Bitmap,则可以通Scanline来比较,很快; 如果不是,你可以创建两个内存流并将Graphic保存到内存流中并比较其中的每个字节.
D D影子D Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-20 #6 有一种算法:以二进制方式打开文件,把他们看成字符来比较,有一个字符不同就 知道了。
H hug Unregistered / Unconfirmed GUEST, unregistred user! 2002-09-07 #7 首先看个是否相同,若相同,对他进行扫描,就它的颜色值和灰度值, 若也相同就是相同的,当然要求其大小!灰度值和大小都有源码!若要可以给你!
T tsedlinux Unregistered / Unconfirmed GUEST, unregistred user! 2003-11-09 #9 最近我在做比较的内容,不知道哪位有代码可以参考一下啊
夺 夺工1 Unregistered / Unconfirmed GUEST, unregistred user! 2003-11-09 #10 图像大不大,不大的话可以用这种方法, function ComparePIC(oldpic,newpic:TBitmap):boolean; var bit1, bit2: TBitmap; st1, st2: TStringStream; begin Result:=False; st1 := tStringstream.create(''); st2 := tStringstream.create(''); Try oldpic.savetostream(st1); newpic.savetostream(st2); Result:= Boolean(comparestr(st1.datastring, st2.datastring)); finally st1.free; st2.free; end; end; 我就用的这种方法,很好用的,速度也蛮快!
图像大不大,不大的话可以用这种方法, function ComparePIC(oldpic,newpic:TBitmap):boolean; var bit1, bit2: TBitmap; st1, st2: TStringStream; begin Result:=False; st1 := tStringstream.create(''); st2 := tStringstream.create(''); Try oldpic.savetostream(st1); newpic.savetostream(st2); Result:= Boolean(comparestr(st1.datastring, st2.datastring)); finally st1.free; st2.free; end; end; 我就用的这种方法,很好用的,速度也蛮快!