AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Text auf ein Foto speichern

Text auf ein Foto speichern

Ein Thema von trabi-basti · begonnen am 13. Aug 2018 · letzter Beitrag vom 14. Aug 2018
Antwort Antwort
trabi-basti

Registriert seit: 23. Jun 2008
2 Beiträge
 
Delphi 7 Enterprise
 
#1

Text auf ein Foto speichern

  Alt 13. Aug 2018, 18:10
Hallo zusammen,

ich nutze noch Delphi 7, also schon eine etwas betagtere Version.
Gibt es dort eine Möglichkeit, einen String als Overlay auf ein Foto zu schreiben und anschließend wieder abzuspeichern?

Ich habe ein JPG in ein TImage geladen, dort bekomme ich aber den Text nicht drauf. Text zeichnen kann ich nur in einer Canvas. Wie aber verbinde ich beides?

Hintergrund: ich möchte auf Fotos das Aufnahmedatum und Uhrzeit darstellen, wie es früher noch auf analogen kameras oftmals der Fall war.

Ich bin leider kein Delphi-Profi, habe das Programm schon ewig (wirklich ewig) nicht mehr benutzt und bin auch beim Programmieren mittlerweile ziemlich raus.
Viellicht könnt ihr mir aber ja dennoch helfen.

Vielen Dank schon mal!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.263 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Text auf ein Foto speichern

  Alt 13. Aug 2018, 18:23
Klappt denn ein Image1.Picture.Bitmap.Canvas.TextOut(); nicht?
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
trabi-basti

Registriert seit: 23. Jun 2008
2 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Text auf ein Foto speichern

  Alt 14. Aug 2018, 09:16
Hallo KodeZwerg,

keine Ahnung warum es gestern nicht funktioniert hat.

Ich habe auch
Code:
Image1.Picture.Bitmap.Canvas.TextOut();
probiert, ich habe dann jedes Mal beim Speichern ein Bild mit einer Dateigröße von 0 Byte erhalten.

Seltsamerweise geht es heute...

Dann lag ich ja gar nicht so falsch. Vielen Dank für deine schnelle Hilfe und viele Grüße!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.263 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Text auf ein Foto speichern

  Alt 14. Aug 2018, 09:27
Gerne, wenn wieder was ist, hier wird geholfen
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.931 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Text auf ein Foto speichern

  Alt 14. Aug 2018, 10:42
Klappt denn ein Image1.Picture.Bitmap.Canvas.TextOut(); nicht?
Zu 100% nicht, jedenfalls nicht, wenn kein Bitmap geladen ist.

In Image1.Picture.Graphic ist die Bild-Komponente drin, bei .Bitmap, .Icon usw. wird diese Komponente gecastet, vorher gelöscht und eine Neue erstellt (ohne den Bildinhalt zu übernehmen), da der enthaltene TGraphic-Nachfahre nicht dem gewünschten Typ entspricht, also hier dem TBitmap.

Zitat:
Ich habe ein JPG in ein TImage geladen



PS: Die Delphi-Komponente kann sowas nicht (PNG-Komponenten von Fremdherstellern eventuell), aber wie wäre es mit einem Multi-Layer-PNG?
Eine teiltransparente Grafik mit dem Text über das eigentliche Foto legen, dann hast du deinen Efekt, aber auch der ursprüngliche Bildinhalt bleibt erhalten. Also man könnte somit diesen Text auch wieder entfernen und hätte das Bild ohne "Löcher" zurück.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (14. Aug 2018 um 10:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.263 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Text auf ein Foto speichern

  Alt 14. Aug 2018, 11:09
So in etwa habe ich es bei mir
Delphi-Quellcode:
procedure BitmapMake24Bit(const ABitmap: TBitmap);
var
  LTempBitmap: TBitmap;
begin
  if ABitmap.PixelFormat <> pf24bit then begin
    LTempBitmap := TBitmap.Create;
    try
      LTempBitmap.PixelFormat := pf24bit;
      LTempBitmap.SetSize(ABitmap.Width, ABitmap.Height);
      LTempBitmap.Canvas.Draw(0, 0, ABitmap);
      ABitmap.PixelFormat := pf24bit;
      ABitmap.Canvas.Draw(0, 0, LTempBitmap);
    finally
      FreeAndNil(LTempBitmap);
    end;
  end;
end;
Delphi-Quellcode:
  Image1.Picture.LoadFromFile('EinJpegBild.jpg');
  BitmapMake24Bit(Image1.Picture.Bitmap);
  Image1.Picture.Bitmap.Canvas.Brush.Style := bsClear;
  Image1.Picture.Bitmap.Canvas.Font.Size := 11;
  Image1.Picture.Bitmap.Canvas.Font.Color := clRed;
  Image1.Picture.Bitmap.Canvas.Font.Style := [fsBold];
  Image1.Picture.Bitmap.Canvas.TextOut(5, 5, 'Delphi-PRAXiS');
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
ghubi01

Registriert seit: 18. Nov 2017
66 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Text auf ein Foto speichern

  Alt 14. Aug 2018, 11:59
Hallo,

so geht es auch:
Delphi-Quellcode:
procedure TForm2.TextToPicture;
var
  jp: TJPEGImage; //in der uses Anweidung Vcl.Imaging.Jpeg hinzufügen!
                   //Für D7 muss nur Jpeg hinzugefügt werden
begin
  jp:=TJPEGImage.Create;
  jp.LoadFromFile('C:\Users\...\Pictures\Bild1.JPG');
  Image1.Picture.Bitmap.Assign(jp);
  Image1.Picture.Bitmap.Canvas.TextOut(10,10,'Hallo');
  jp.Assign(Image1.Picture.Bitmap);
  jp.SaveToFile('C:\Users\..\Pictures\Bild2.JPG');
  jp.Free;
end;

Geändert von ghubi01 (14. Aug 2018 um 12:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.753 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Text auf ein Foto speichern

  Alt 14. Aug 2018, 12:13
Und ein bisschen hübscher könnte es hiermit gehen: https://parnassus.co/open-source/ttransparentcanvas/

[edit] @ghubi01: Da fehlt ein Ressourcen-Schutzblock (try...finally) [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ghubi01

Registriert seit: 18. Nov 2017
66 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Text auf ein Foto speichern

  Alt 14. Aug 2018, 12:24
Hallo,

@DeddyH: Das ist mir schon klar, dass hier noch ein try … finally Block rein muss. Hab ich mir hier im Beispiel aus Bequemlichkeit gespart.

Ich muss aber noch anmerken, dass sich bei meinem Beispiel die dpi-Zahl und die Dateigröße in der gespeicherten Datei ändert.
Wie ich das beeinflussen kann, weis ich noch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.042 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

AW: Text auf ein Foto speichern

  Alt 14. Aug 2018, 15:16
Moin...
Zitat:
ich nutze noch Delphi 7, also schon eine etwas betagtere Version.
...wieso?
Community Edition: https://www.embarcadero.com/de/products/delphi/starter

PS: Wenn du von D7 umsteigst...erwarte einen Kulturschock!

Geändert von haentschman (14. Aug 2018 um 15:18 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf