2009-07-08 16 views
2

Also konvertiere ich eine Metafile (EMF um genau zu sein) zu einem JPEG oder GIF (egal, solange es mit Browsern kompatibel ist) und wenn ich es tue Bei der Konvertierung werden alle transparenten Pixel schwarz. Ich habe keine Ahnung, wie das in GDI + zu tun, aber hier ist die Methode, die ich bin mit der Datei speichern:GDI + Bildkonvertierung von Metafile nach JPEG/GIF Ergebnisse in schwarzem Hintergrund

Dim Img As System.Drawing.Imaging.Metafile = New System.Drawing.Imaging.Metafile(stream) 
Img.Save(Server.MapPath("/FileName.gif"), System.Drawing.Imaging.ImageFormat.Gif) 

Antwort

0

Mein Verständnis ist, dass Sie Informationen zu Rahmen zur Verfügung stellen müssen, in Bezug auf das Bildformat des Ziels UND Quellenbilder, damit Alphakanäle korrekt übersetzt werden.

Spezifische Farbinformationen: Bits pro Pixel und ob es pro Pixel Alpha oder eine transparente Farbe oder einen einzelnen Alpha-Wert für das gesamte Bild gibt - solche Sachen.

Aber ich bin nicht sicher, wie dies in VB getan wird (oder überhaupt für diese Angelegenheit in .NET) - Ich verwende native C++ für diese Art von Operationen ...

1

Wie ich es verstehe, enthält die Metadatei keine Informationen für den Hintergrund - es ist einfach transparent.

Eine einfache Arbeit ist einfach den Hintergrund die gewünschte Farbe zu färben.

z. Der folgende Code erstellt eine Bitmap mit derselben Größe wie das Originalbild, zeichnet den Hintergrund weiß und zeichnet dann das Metadateibild über dem Hintergrund.

 Rectangle imageRect = new Rectangle(0, 0, originalImage.Width, originalImage.Height); 
     Bitmap newImage = new Bitmap(originalImage.Width, originalImage.Height); 
     Graphics g = Graphics.FromImage(newImage); 
     g.FillRectangle(new SolidBrush(Color.White), imageRect); 
     g.DrawImage(originalImage, new Point(0, 0));