Laden...

tif Dateien öffnen, Stempeln abspeichern

Erstellt von Edzio vor 10 Jahren Letzter Beitrag vor 9 Jahren 2.754 Views
E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 10 Jahren
tif Dateien öffnen, Stempeln abspeichern

Hallo zusammen,

ich habe eine Benutzeroberfläche, in der ich gerne einen Pfad auswählen will, in welchem mehrer
.tif Dateien enthalten sind.
Diese .tif Dateien sollen mit einem Text, den der Benutzer eingibt, quasi "gestempelt" werden, und
anschließend wieder abgespeichert werden (egal ob unter gleichem namen oder neu_datei1.tif
neu_datei2.tif)...
Wie kann ich das realisieren?

Mit

            string strText = eingabetext.ToString();
            Font font = new Font("Arial", 12, FontStyle.Bold | FontStyle.Underline);
            Graphics graph = this.CreateGraphics();
            graph.DrawImage(img, 0, 0);
            graph.DrawString(strText, font, Brushes.Red, new Point(50, 50));

befindet sich das ja nur als "Hintergrundbild" auf meiner Benutzeroberfläche,
abspeichern geht hier auch nicht.

Kann mir da wer helfen?

Danke im Voraus.

Gruß Edzio

3.825 Beiträge seit 2006
vor 10 Jahren

Hallo Edzio,

mit den Suchbegriffen "C# watermark" findest Du viele Beispiele dazu im Netz.

Ich benutze Teile von diesem Projekt :

Build a Simple Watermarking Utility in C#

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo Edzio,

verwende new Bitmap, dann Graphics.FromImage und wenn das Zeichnen fertig ist Image.Save.

herbivore

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 10 Jahren

Hallo ihr beiden,

danke für die schnelle Antworten,
ich werde euren Tips folgen.

Habe nur mit "tif stempeln" gesucht

Gruß Edzio

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 9 Jahren

so kurzes Zwischenergebnis, nach ein paar Fehlermeldungen mit 0x80004005 habe ich nun folgenden Code um ein tif zu öffnen, es zu "stempeln" und unter selben Namen abzuspeichern:

public void bildstempel()
        {
            string strText = verb_zu_def.get_dauertext();
            string neuerPfad = verb_zu_def.get_pfad();
            Font font = new Font("Arial", 72, FontStyle.Bold | FontStyle.Underline);
            
            //Datei öffnen  
            Stream bildstream = new FileStream(neuerPfad, FileMode.Open, FileAccess.Read, FileShare.Read);
            Bitmap bildwandel2 = new Bitmap(bildstream);


            //erstellt aus geöffneter Datei eine Grafik
            Graphics grafik = Graphics.FromImage(bildwandel2);      

            //Zeichnen Funktionen
            grafik.DrawImage(bildwandel2, 0, 0);
            grafik.DrawString(strText, font, Brushes.Red, new Point(150, 150));

            //clonen um "Schreibschutz" zu vermeiden
            Bitmap bildwandel = bildwandel2.Clone(new Rectangle(0, 0, bildwandel2.Width, bildwandel2.Height), PixelFormat.Format64bppPArgb);
            bildwandel2.Dispose();
            bildstream.Close();

            //Speichern
            try
            {
                
                bildwandel.Save(neuerPfad, ImageFormat.Tiff);
            }
            catch (Exception speicherfehler)
            {
                MessageBox.Show("Fehler:\n" + speicherfehler, "Fehler beim speichern", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //leeren - schließen
                bildwandel.Dispose();
            }

            //leeren - schließen
            bildwandel.Dispose();

        }

Nun will ich versuchen, dass der Benutzer ein Verzeichnis auswählt, und alle .tif Dateien in diesem Verzeichnis bekommen den Stempel.

Falls ich nicht weiterkomme melde ich mich 😃

Gruß Edzio