image的比较(100分)

  • 主题发起人 主题发起人 peanut_pro
  • 开始时间 开始时间
P

peanut_pro

Unregistered / Unconfirmed
GUEST, unregistred user!
在进行个人资料更新时遇到的问题,看是否个人的相片做了更改,相片放在image控件中(用内存流导入的),怎么知道在更新时是否做了更改?
因为我对相片(image类型),附加了一个类型扩展名字段,所以如更新的话,两个字段都要更新,而且必需得得知道图片类型!
1.当image控件中的图片改变了的话,扩展名也会知道,两个字段都更新是了.
2.当没有变化时,这个字段我就不更新,扩展名也不用理.保持原来的不变
所以条件是怎么判断image是否改变了呢? 不知道说明白没有!

 谢谢!!!----
 
把image用内存流导出,然后得出其md5(或者其他编码),这个编码保存在数据库中,相片改变比较其md5码就可以了.用此方法找到并删除相同的图片、声音文件非常有效律
 
楼上能详细一点吗,或者列点主要代码吗?不太懂
 
关注中(它叫我不要关税,所以多罗嗦几句)
 
你设一个bool变量,如果他在界面上修改了,你在关闭界面时,判断一下这个变量不就知道了吗。
 
有简单办法,在图片上取一些特征点,把这些点象素的R、G、B值都取出来,之后就可以直接对比这些数据来验证图片是否改动,特征点越多越准确,全取的话就一点问题也没有了,例如:
image1.Picture.LoadFromFile('test.bmp');
bmp := TBitmap.create;
bmp:=image1.Picture.Bitmap;
bmp.PixelFormat:= pf24bit;
//按图片的R、B、G值将图象转换成字符串,但为了节省运算时间,目前只取G值进行运算
k:=0;
//假设取相片的320*240象素内的RGB
for i:=1 to 320 do
for j:=1 to 240 do
begin
AColor := bmp.Canvas.Pixels[i,j];
R := GetRValue(AColor);
B := GetBValue(AColor);
G := GetGValue(AColor);
strR[k]:=R;
strG[k]:=G;
strB[k]:=B;
end;

//最后得到的三个数组就是图片的范围内全部RGB数据
 
多人接受答案了。
 
后退
顶部