回答
尝试以下操作:
uses
PNGImage;
procedure TForm1.Button1Click(Sender: TObject);
var
PNGImage: TPNGImage;
BlobStream: TMemoryStream;
begin
// create the PNG image instance
PNGImage := TPNGImage.Create;
try
// assuming you have in the BlobStream variable the image from a DB loaded
PNGImage.LoadFromStream(BlobStream);
// setup the text background to be transparent
PNGImage.Canvas.Brush.Style := bsClear;
// optionally configure the font
PNGImage.Canvas.Font.Size := 11;
PNGImage.Canvas.Font.Color := clRed;
PNGImage.Canvas.Font.Style := [fsBold];
// and render it to the image's canvas
PNGImage.Canvas.TextOut(5, 5, 'SomeText');
// save this modified image to the file
PNGImage.SaveToFile('c:\picture.png');
finally
// and finally free the PNG image instance
PNGImage.Free;
end;
end;
下面是一个例子,如何我会创造我的访问卡(不要忘记将necessary image
文件保存为d:\llamas.png
):
uses
GraphUtil, PNGImage;
procedure CreateCard(const AFileFile: string; AImage: TPNGImage;
const AName, ASurname: string);
begin
with TPNGImage.CreateBlank(COLOR_RGB, 8, 330, 160) do
try
GradientFillCanvas(Canvas, clWhite, $000080FF,
Canvas.ClipRect, gdVertical);
Canvas.StretchDraw(Rect(18, 18, 108, 108), AImage);
Canvas.Pen.Width := 2;
Canvas.Brush.Style := bsClear;
Canvas.Rectangle(5, 5, Width - 4, Height - 4);
Canvas.Font.Size := 12;
Canvas.Font.Style := [fsBold];
Canvas.TextOut(110, 30, 'Form: ' + AName + ' :.');
Canvas.TextOut(125, 60, 'Genus: ' + ASurname + ' :.');
SaveToFile(AFileFile);
finally
Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
PNGImage: TPNGImage;
begin
PNGImage := TPNGImage.Create;
try
// here you will load the image blob (by using LoadFromStream)
// instead of LoadFromFile
PNGImage.LoadFromFile('d:\llamas.png');
CreateCard('d:\visit-card.png', PNGImage, 'Alpaca', 'Lama');
finally
PNGImage.Free;
end;
end;
下面是它的外观:
:D工程很好 感谢您的帮助 –
@TLama处理背景的习惯Delphi方式是设置'Canvas.Brush.Style:= bsClear'。你的方式可行,但当VCL将它包装得很好时,我并不认为需要使用原始GDI。 –
@大卫,绝对!我甚至不知道我在哪里设想的。它必须来自我很久以前见过的一些老例子。现在我使用我的(基于GDI的)框架来处理这样的事情,所以我甚至都没有考虑过。感谢提示! – TLama
- 1. 加载图片到图像德尔福
- 2. 图像查看德尔福
- 3. 图像处理德尔福
- 4. 德尔福:从图像创建一个字符串并添加到备忘录
- 5. 我如何加载图像到德尔福XE8的一个apk
- 6. 如何绘制一个数字到图像德尔福7
- 7. 德尔福 - 将图像合并到新的单个文件并读取数据
- 8. 德尔福保存到文本文件
- 9. 德尔福图像运动故障
- 10. 减少德尔福图像质量
- 11. 德尔福的丝带瑕疵图像
- 12. 德尔福弹出框与图像
- 13. 德尔福7:将图像附加到鼠标
- 14. 德尔福7从另一个图像的图像限制
- 15. 德尔福的图像列表:从.res中加载ResourceLoad图标
- 16. 将文字添加到图像并保存
- 17. 将字符串添加到位图图像并保存vb
- 18. 德尔福加载图像保存为一个SQL数据库blob
- 19. 如何保存图像添加文本后为图像
- 20. OpenGL与德尔福:离线渲染图像到文件
- 21. 将标签合并到图像上并保存为新图像?
- 22. 如何将文字添加到图像
- 23. 如何添加文字到图像?
- 24. 如何保存提取的图标德尔福
- 25. Pascal或德尔福的动画图像像Gifs
- 26. 德尔福v.Word - 如何从德尔福
- 27. 如何打开图像并使用ImageMagick重新保存图像?
- 28. 保存/重新加载图像并删除旧图像
- 29. 如何保存附加到图像视图的图像?
- 30. 德尔福5 - XE5 - 保存图片到的Nexus 7设备
将图像加载到TBitmap中。调用TBitmap.Canvas.TextOut。保存位图。 –
欢迎来到StackOverflow!请尝试重新提出您的问题;这听起来像是一个完整的家庭作业,你尝试过什么吗?对你的问题:1)*从DB加载图像* - 在互联网上有很多例子,只是尝试搜索一个2)*在另一张图片中添加这些数据* - 你想添加什么数据到另一张图片和怎么样 ?你的意思是从数据库加载图片和一些文字,让我们说图片描述,并在图片上绘制这个描述并保存在某个地方?什么是身份证表格? – TLama
@TLama是的,我从数据库加载图像,并且是这样的东西。这里是身份证的形式:http://i891.photobucket.com/albums/ac114/evilkidaz/ID.png我必须从数据库中加载名称,姓氏和图像,并将它们放在窗体中的位置,然后保存它。我只在插入图片中的这些数据时遇到困难 DavidHeffernan感谢您的回复,但文字带有灰色背景。我可以更改字体吗?让它变大还是改变颜色?编辑:我发现如何插入图像:[code] Image1.Canvas.Draw(1,1,graphic); [/ code] –