Hallo Zusammen,
ich habe folgendes Problem:
Ich erzeuge per Code (VB 2005) eine Bitmap (oBildLarge). Diese Bitmap wird mit Hilfe eines System.Drawing.Graphics Objekts (oGraphicsLarge = System.Drawing.Graphics.FromImage(oBildLarge)) bearbeitet.
Diesen Code habe ich mal weg gelasse, da er mit dem Problem nichts zutun hat.
Da ich die Bitmap mit dem Graphics Objekt bearbeite, kann ich die Farbtiefe nicht bei Erzeugen des Bild Objekts angeben (oBildLarge = New System.Drawing.Bitmap(200, 20, Imaging.PixelFormat.Format24bppRgb)).
Die Idee von mir war es nun, die Farbtiefe beim Speichern durch einen Encoder anzugeben. Laut VB-Hilfe ist dies auch möglich.
Das Bitmap wird jedoch mit einer 32bit Farbtiefe gespeichert und ich weis nicht mehr weiter.
Code:
'Bild umwandel
Dim oBildLarge As System.Drawing.Bitmap
Dim sPfad As String = "C:\Bitmap.bmp"
Dim oImageCodecInfo As System.Drawing.Imaging.ImageCodecInfo = Nothing
Dim oImageCodecInfoArray() As System.Drawing.Imaging.ImageCodecInfo
Dim oEncoder As System.Drawing.Imaging.Encoder
Dim oEncoderParameter As System.Drawing.Imaging.EncoderParameter
Dim oEncoderParameters As System.Drawing.Imaging.EncoderParameters
Dim shFarbtiefe As Short
'Farbtiefe auf 24bit einstellen
shFarbtiefe = 24
'Bild erzeugen
oBildLarge = New System.Drawing.Bitmap(200, 20)
'Codec Info für eine Bitmap ermitteln
oImageCodecInfoArray = _
System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders
For Each oCodeInfo As System.Drawing.Imaging.ImageCodecInfo In _
oImageCodecInfoArray
If oCodeInfo.MimeType = "image/bmp" Then
oImageCodecInfo = oCodeInfo
Exit For
End If
Next
'Encoder für die Farbtiefe
oEncoder = System.Drawing.Imaging.Encoder.ColorDepth
oEncoderParameters = New System.Drawing.Imaging.EncoderParameters(1)
'Parameter des Encoders auf 24bit (shFarbtiefe) festlegen
oEncoderParameter = _
New System.Drawing.Imaging.EncoderParameter( _
oEncoder, shFarbtiefe)
oEncoderParameters.Param(0) = oEncoderParameter
oBildLarge.Save(sPfad, oImageCodecInfo, oEncoderParameters)
'Aufräumen
oBildLarge.Dispose()
oBildSmall.Dispose()
oImageCodecInfo = Nothing
oImageCodecInfoArray = Nothing
oEncoder = Nothing
oEncoderParameter.Dispose()
oEncoderParameters.Dispose()
Vieleicht hat in diesem Bereich jemand Erfahrung und kann mir sagen was ich Falsch mache, oder einen anderen Weg nennen!
------------------
Mfg Daniel
Beim Bill Gates, bei uns .net!
------------------
SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP