vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Transparente GIF Grafiken erstellen 
Autor: KapitänNet
Datum: 05.09.13 01:33

Hallo,

seit 4 Tagen versuche ich nun, transparente GIF Grafiken in guter Qualität zu erstellen.
Mit dem Octree Quantizer werden transparente GIF's erstellt. Allerdings ist die Qualität in größeren Abmessungen nicht überzeugend.

Mit dem Encoder ist die Qualität in größerer Abmessung gut. Allerdings wird keine Transparenz unterstützt. Es wird immer ein schwarzer Hintergrund gesetzt.

  Dim myImageCodecInfo As ImageCodecInfo = GetEncoderInfo(ImageFormat.Gif)
        Dim encCompressionrParameter As New EncoderParameter( _
          System.Drawing.Imaging.Encoder.Compression, CLng( _
          EncoderValue.CompressionLZW))
        Dim encQualityParameter As New EncoderParameter( _
        System.Drawing.Imaging.Encoder.Quality, 100L)
.......
NewImg.Save(strFile, myImageCodecInfo, myEncoderParameters)
Mit dem Code von http://bobpowell.net/giftransparency.aspx kann ich nachträglich eine Transparenz einfügen, wenn ich vor Erstellung der Grafik einen Hintergrund zeichne.
Allerdings funktioniert das auch nicht 100 prozentig. Wenn ich z.B. Weiß als Hintergrundfarbe festlege,ist das Weiß zweimal in der Palette enthalten. Wähle ich den falschen Index, wird keine Transparenz gesetzt. Eine Hintergrundfarbe kann auch an beliebiger Stelle in der Palette stehen.
Gebe ich keine Hintergrundfarbe an, wird ein schwarzer Hintergrund verwendet. Wenn ich diesen transparent mache, werden auch Teile der Testgrafik transparent, da diese auch Schwarz beinhaltet.

Code für die Suche nach der gesetzten Hintergrundfarbe:
Private Function Index_OfTransparency(ByVal pPal As ColorPalette, ByVal pCol As _
  Color) As Integer
        Dim i As Integer
 
        For i = pPal.Entries.Length - 1 To 0 Step -1
            If pPal.Entries(i).IsEmpty Then
                'überlesen
            ElseIf pPal.Entries(i).ToArgb = pCol.ToArgb Then
                Return i
            End If
        Next
        Return -1
    End Function
Kennt Ihr noch eine Möglichkeit, die Transparenz zu setzen? Eventuell muss in der GIF Datei noch ein Flag oder Zusatzinformaton gespeichert werden.
Oder gibt es eine elegantere Methode?

Mit besten Grüßen

Jürgen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Transparente GIF Grafiken erstellen1.479KapitänNet05.09.13 01:33
Re: Transparente GIF Grafiken erstellen648CLL08.10.13 11:32
Re: Transparente GIF Grafiken erstellen643KapitänNet08.10.13 15:59

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel