Arbeiten in Visual Studio 2008. Ich versuche, auf ein PNG-Bild zu zeichnen und das Bild erneut zu speichern.Problem mit PNG-Bildern in C#
ich folgendes tun:
private Image img = Image.FromFile("file.png");
private Graphics newGraphics;
Und im Konstruktor:
newGraphics = Graphics.FromImage(img);
Aufbau der Lösung keine Fehler gibt. Wenn ich versuche, es zu laufen, ich diese:
Ein Graphics-Objekt kann nicht von einem Bild geschaffen werden, die eine indizierte Pixelformat hat.
Ich habe nicht viel Erfahrung mit der Verwendung von Bildern in C#. Was bedeutet das und wie kann ich Abhilfe schaffen?
EDIT: durch Debugging, Visual Studio sagt mir, dass das Bild ein format8bppindexed
Pixel Format hat.
Also, wenn ich die Grafikklasse nicht verwenden kann, was verwende ich?
EDIT2: Nach dem Lesen this, ich denke, es ist sicher anzunehmen, dass ich besser bei JPG-Dateien bei der Arbeit mit GDI + bleiben, nein?
EDIT3: meine using-Anweisungen:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
Glück gehabt mit dieser Methode? http://www.c-sharpcorner.com/UploadFile/rrraman/graphicsObject08232007102733AM/graphicsObject.aspx – Greg
Ich benutze PNG-Dateien mit dem Graphics-Objekt die ganze Zeit. Veröffentlichen Sie einen Link zu der PNG-Datei, die Sie verwenden, und wir werden sehen, was damit nicht stimmt. – MusiGenesis
Intern GDI arbeitet mit Bitmaps, JPG ist komprimiert und nicht wirklich toll, ein komprimiertes Bild für die Arbeit mit den Rohdaten. Ihr Bild ist 8bppIndexed, dies ist ein Bitmap-Format, in dem die Farben in der Palette gespeichert werden und nicht die Pixeldaten. Die Graphics-Objekte können die Pixelwerte nicht direkt ändern, da sie dies nicht ändern. Sie müssen es in 24bppRGB konvertieren – badbod99