Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Try the following:</p> <pre><code>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; </code></pre> <p>Here is an example how would I create my visit card (don't forget to save the <a href="https://i.stack.imgur.com/II7bT.png" rel="noreferrer"><code>necessary image</code></a> file as <code>d:\llamas.png</code>):</p> <pre><code>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; </code></pre> <p>Here is how it looks like:</p> <p><img src="https://i.stack.imgur.com/WO1Cz.png" alt="enter image description here"></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload