各位仁兄,有谁知道怎么样在一张图片上加上自己的文字,然后将文字和图片合起来保存为一张图片吗?(100分)

  • 主题发起人 主题发起人 ninsen
  • 开始时间 开始时间
N

ninsen

Unregistered / Unconfirmed
GUEST, unregistred user!
本人想在指定的图片像加上文字,然后将文字和图片合成一张图片保存起来,请高手们指点一下,谁最先回答问题,分全部给他。
 
在photoshop中很简单
Delphi不可能
 
to zyt_1978
不要开玩笑了,在PHOTOSHOP上,如果想用手动,用画图都可以啦。
 
那还不容易?先用tbitmap load一张图,然后.textout 把字写上去就可以了。
 
我没有做过,但是思路好像是这样的:现将图片用设备资源装载,然后利用设备的Canvan的textout出文字,然后再保存出来就可以拉~
思路是这样想,但是细节还是要好好处理的!
水平不高,不对之处敬请指点,大家一起学习学习[:D]
 
保存的时候抓取图片的区域就是了
就可以连文字一块了
 
将图片用image 载入
然后写
image.canvas.brush.style:=bsclear;//使文字透明
image.canvas.textout(0,0,'哈哈哈哈——图片');//输出文字
image.picture.savetofile('d.bmp');
 
var
Bitmap:Tbitmap;
Ajpeg:TJPEGImage;
begin
Bitmap:=Tbitmap.Create ;
AJpeg:=TJpegImage.Create;
AJpeg.LoadFromFile('0122.jpg');
Bitmap.Assign(AJpeg);
bitmap.Canvas.Font.Size :=9;
bitmap.Canvas.Font.Color :=255*256*256;
bitmap.Canvas.TextOut(20,10,'文本输出');
bitmap.Canvas.TextOut(50,20,'文本输出');
bitmap.Canvas.Font.Color :=255*256;
bitmap.Canvas.TextOut(10,80,'文本输出');
Canvas.Draw(5,30,Bitmap);
AJpeg.Free;
Bitmap.Free;
end;
 
to 白河愁
那么如果想设置字体的类型,大小和颜色,应该做。
to tranke
谢谢,大家一起学习,共同进步,哈哈
 
Canvas.Font. <-有.COLOR .XX 的,你自己看一下就知道了。
 
to skadon
你创建的文件怎么样保存呢?
 
var
Bitmap:Tbitmap;
Ajpeg:TJPEGImage;
OldBkMode : integer;
begin
Bitmap:=Tbitmap.Create ;
AJpeg:=TJpegImage.Create;
AJpeg.LoadFromFile('0122.jpg');
Bitmap.Assign(AJpeg);
OldBkMode := SetBkMode(Bitmap.Canvas.Handle, TRANSPARENT);
Bitmap.Canvas.Font.Color :=clBlue;
Bitmap.Canvas.Font.Size :=18;
Bitmap.Canvas.Font.Name :='隶书';
Bitmap.Canvas.TextOut(10,80,'叠加文字到图片');
SetBkMode(Bitmap.Canvas.Handle, OldBkMode);
Canvas.Draw(5,30,Bitmap);
AJpeg.Assign(Bitmap);
AJpeg.CompressionQuality :=80; //质量
AJpeg.Compress;
AJpeg.SaveToFile('0123.jpg');
Bitmap.SaveToFile('0123.bmp');
AJpeg.Free;
Bitmap.Free;
end;
 
bitmap.SaveToFile('c:/aaa.bmp');
 
楼上已经说得很清楚拉~
呵呵...
 
to skadon
不好意思,请教仁兄最后一个问题,如果输入的文字的字数是不固定的,我怎么样才能让文字在图片中不管字数多少都居中呢?
 
需要测试一下,如果用中文字,指定Bitmap.Canvas.Font.Size,每个字的宽度是固定的,先用Length()计算字符串长度,就可以知道宽度了,你测试一下吧。
 
Length不行吧???
Bitmap.Canvas.TextWidth(str);
居中:
str:='为中华';
Bitmap.Canvas.TextOut((Bitmap.Width-Bitmap.Canvas.TextWidth(str)) div 2,0,str)
水平居中显示
 
用Windows的画图做
 
:P,谢谢hongxing_dl,俺又学了一点。
 
谢谢大家的帮忙,不过我已经说过谁解决了这个问题,就把分给谁,skadon仁兄帮我解决了这个问题,所以分数应该归他。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部