|
| |

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 |  |
 | 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 |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
| |
|
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
|
|