基于DELPHI的数值图象处理水印技术 ( 积分: 200 )

  • 主题发起人 主题发起人 暗夜中独舞
  • 开始时间 开始时间

暗夜中独舞

Unregistered / Unconfirmed
GUEST, unregistred user!
这是小弟的毕业设计题目
但是小弟现在对水印技术还几乎不了解~~
所以请各位富翁帮帮忙 提供点资料 越多越好
小弟先谢过了
 
去图书馆 ,中国优秀博硕士学位论文全文数据库 里边检索
 
有没有书籍方面的材料呢????
谁能不能在里面直接谈下水印方面的技术呀?
 
用Indy的IdPOP3控件就可以了
procedure TForm1.Button1Click(Sender: TObject);
var
n,
nummsgs: integer;
begin
//连接服务器(连接之前设置好IdPop3的各种属性,如服务器Host,登录用户名,密码等
idpop31.Connect;

//获取服务器上邮件列表(当前有多少封邮件在收件夹中)
NumMsgs := idpop31.CheckMessages;

Memo1.lines.add('Emails:' + IntToStr(NumMsgs));//

for n := 1 to NumMsgs do begin
idpop31.RetrieveHeader(n, idMessage1);//以次获得每个邮件的邮件头信息
Memo1.Lines.Add('Email No:' + IntToStr(n) +
' From:' + idMessage1.From.Text +
' Subj:' + CheckTxt(idMessage1.Subject));
idMessage1.Clear;
end;
idpop31.Disconnect; //断开邮件服务器
end;

自己拿到邮件头信息再和本地比对,有新邮件就通知,没有就忽略。
CheckText函数是对邮件标题做解码用的,函数代码如下:

function CheckTxt(s: string): string;
var
s1, s2, s3: integer;
t, v: string;
Encoding: char;
hex, step: integer;
a1: array[1..4] of byte;
b1: array[1..3] of byte;
j: integer;
byte_ptr, real_bytes: integer;
begin
s1 := Pos('=?', s);
s2 := 1;
hex := 0;
if s1 > 0 then
begin
for s2 := Length(s) - 1 downto 1 do
begin
if Copy(s, s2, 2) = '?=' then Break;
end;
end;
if (s1 = 0) or (s2 = 1) then
begin
Result := s;
Exit;
end;
t := Copy(s, s1 + 2, s2 - 2 - s1);
s3 := Pos('?', t);
Delete(t, 1, s3);
if (t = '') then
begin
Result := s;
Exit;
end;
Encoding := t[1];
Delete(t, 1, 2);
v := '';
step := 0;
case Encoding of
'Q':
while t <> '' do
begin
case step of
0:
begin
case t[1] of
'_': v := v + ' ';
'=': step := 1;
else
v := v + t[1];
end;
end;
1:
begin
if t[1] <= '9' then
hex := (Ord(t[1]) - Ord('0')) * 16
else
hex := (Ord(t[1]) - 55) * 16;
step := 2;
end;
2:
begin
if t[1] <= '9' then
hex := hex + (Ord(t[1]) - Ord('0'))
else
hex := hex + Ord(t[1]) - 55;
v := v + Chr(hex);
step := 0;
end;
end;
Delete(t, 1, 1);
end;
'B':
begin
byte_ptr := 0;
for j := 1 to Length(t) do
begin
Inc(byte_ptr);
case t[j] of
'A'..'Z': a1[byte_ptr] := Ord(t[j]) - 65;
'a'..'z': a1[byte_ptr] := Ord(t[j]) - 71;
'0'..'9': a1[byte_ptr] := Ord(t[j]) + 4;
'+': a1[byte_ptr] := 62;
'/': a1[byte_ptr] := 63;
'=': a1[byte_ptr] := 64;
end;
if byte_ptr = 4 then
begin
byte_ptr := 0;
real_bytes := 3;
if a1[1] = 64 then real_bytes := 0;
if a1[3] = 64 then
begin
a1[3] := 0;
a1[4] := 0;
real_bytes := 1;
end;
if a1[4] = 64 then
begin
a1[4] := 0;
real_bytes := 2;
end;
b1[1] := a1[1] * 4 + (a1[2] div 16);
b1[2] := (a1[2] mod 16) * 16 + (a1[3] div 4);
b1[3] := (a1[3] mod 4) * 64 + a1[4];
if (real_bytes > 0) then
v := v + chr(b1[1]);
if (real_bytes > 1) then
v := v + chr(b1[2]);
if (real_bytes > 2) then
v := v + chr(b1[3]);
end;
end;
end;
end;
Result := Copy(s, 1, s1 - 1) + v + Copy(s, s2 + 2, 999);
end;
 
to zqw0117:
我想你误会我的意思了,我的意思是在程序外监控并记录邮件的收发
比如,我的机子上用OUTLOOK收到一封邮件,或者用网易发了一封邮件,这个程序就会把这些信息记录下来。。。
还是很感谢的你的回答~~呵呵
 
顶起来等高手啊
 
监控非网页发送容易,网页发送 监控难啊
因为他POST数据各个服务商不一样的 怎么去区别一般的POST
就是判断麻烦会误报
过滤发送的包来实现,哪位仁兄有更好的方法告诉小弟一声QQ9983328
 
监控非网页发送难道也要用钩子把OUTLOOK之类的信息钩出来吗?那如果换了一种邮件工具呢?不是又要重写?
有没可能通过拦截POP3数据包 分析数据包 达到邮件监控的目的?
 
大富翁又回来了~~~无限感动中~~~~
 
多人接受答案了。
 
后退
顶部