如果给图片加入自己的信息,如网址.(50分)

  • 主题发起人 主题发起人 landa8888
  • 开始时间 开始时间
L

landa8888

Unregistered / Unconfirmed
GUEST, unregistred user!
如下面的图片,都加入了信息,我想应该是可以编程实现的吧,希望大家帮帮忙.
http://news3.xinhuanet.com/photo/2004-05/01/xinsrc_300501010850110193479.jpg
 
你给的效果不是编程做的!
一般的图象处理软件都可以做的!
如:photoshop->文字工具
=====================================================
编程也应该可以!
我们不妨研究一下!不过文字效果可能就没有其他工具处理的好了!

 
作者?: yostgxf
标题?: jpeg文件,图片合并
关键字:
分类?: 个人专区
密级?: 公开
(评分: , 回复: 0, 阅读: 10) »»
uses jpeg, ExtCtrls;
var
JPEGImage: TJPEGImage;
tmpImage1, tmpImage2, tmpImage3 :TImage;
ARect :TRect;
AWidth, AHeight :integer;
begin
DoubleBuffered:=true;
tmpImage1 := TImage.Create(Self);
tmpImage2 := TImage.Create(Self);
tmpImage3 := TImage.Create(Self);
tmpImage3.Parent:=self;
tmpImage1.AutoSize:=true;
tmpImage2.AutoSize:=true;

//先读入jpeg格式的图片
JPEGImage := TJPEGImage.Create;
JPEGImage.LoadFromFile('你读入的文件1');
tmpImage1.Picture.Bitmap.Assign(JPEGImage);
JPEGImage.LoadFromFile('你读入的文件2');
tmpImage2.Picture.Bitmap.Assign(JPEGImage);
AWidth := tmpImage1.Width;
AHeight:= tmpImage1.Height;
tmpImage1.AutoSize:=false;
//并排排列
tmpImage3.Width:=tmpImage1.Width+tmpImage2.Width;
tmpImage3.Height:=tmpImage1.Height;
ARect:=Rect(AWidth, 0, AWidth+tmpImage2.Width, AHeight);
//上下排列
tmpImage3.Height:=tmpImage1.Height+tmpImage2.Height;
tmpImage3.Width:=tmpImage1.Width;
ARect:=Rect(0, AHeight, AWidth, AHeight+tmpImage2.Height);

//合并后的图片放在tmpImage1中
tmpImage3.Canvas.CopyRect(tmpImage1.ClientRect, tmpImage1.Canvas, tmpImage1.ClientRect);
tmpImage3.Canvas.CopyRect(ARect, tmpImage2.Canvas, tmpImage2.ClientRect);
JPEGImage.Assign(tmpImage3.Picture.Bitmap);
tmpImage1.Free;
tmpImage2.Free;

JPEGImage.Compress;
JPEGImage.SaveToFile('你保存的文件');

JPEGImage.Free;
end;
 
var ss:tcanvas;
begin
ss:=tcanvas.Create;
ss.Handle:=getdc(0);
bitblt(image1.canvas.handle,0,0,image1.width,image1.height,ss.handle,0,0,srccopy);
end;
 
大家请注意,这个是准备对图片进行批量加文字的,不知道楼上的算法是否有行.
 
可行的
方法是先在内存中创建一个BITMAP,用textout方法生成文字图片
在用这张图片与你想要加的图片bitblt()就行了
 
加水印啊,两张图做个alpha混合
 
TO:wqhatnet
按你的方法实现后不知道如何保存新的图片文件
 
//合并后的图片放在tmpImage1中
tmpImage3.Canvas.CopyRect(tmpImage1.ClientRect, tmpImage1.Canvas, tmpImage1.ClientRect);
tmpImage3.Canvas.CopyRect(ARect, tmpImage2.Canvas, tmpImage2.ClientRect);
JPEGImage.Assign(tmpImage3.Picture.Bitmap);
tmpImage1.Free;
tmpImage2.Free;

JPEGImage.Compress;
JPEGImage.SaveToFile('你保存的文件');

JPEGImage.Free;
end;

 
to :wqhatnet,
谢谢,我试下,对了,如果想对图片进行加密,应该如何做?
 
在图片加入信息后,背景不是透明的,不知道大家有什么好办法/
 
那是另一回事 了,
 
go !
http://www.01cn.net/cgi-bin/topic_show.cgi?id=1064
http://www.01cn.net/cgi-bin/topic_show.cgi?id=1029
 
谢谢大家,来者都有份
 

Similar threads

D
回复
0
查看
900
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部