Problem mit indizierten Pixelformaten



  • Hi Fans,

    merkwürdigerweiße komme ich nicht weiter.
    Der Code wurde nochmal simplifiziert und dürfte daher selbsterklärend sein.

    // The old file
                Bitmap src_bitmap = new Bitmap(textBox1.Text);
                byte[,] image = new byte[src_bitmap.Width, src_bitmap.Height];
    
                // The new file
                Bitmap dest_bitmap = new Bitmap("C:/dest.gif");
                Graphics g = Graphics.FromImage(dest_bitmap); // HIER IST DER FEHLER
    
                // Read the Pixel in the old file
                int i, j;
                for (i = 0; i< src_bitmap.Width; i++) 
                {
                    for (j=0; j< src_bitmap.Height; j++)
                    {
                        Color pixelColor = src_bitmap.GetPixel(i, j);
                        int r = pixelColor.R; // the Red component
                        int b = pixelColor.B; // the Blue component
                        Color newColor = Color.FromArgb(r, 0, b);
                    }
                }
    

    Die Fehlermeldung:

    #"Ein Grafikobjekt kann nicht aus einem Bild mit einem indizierten Pixelformat erstellt werden."

    Natürlich habe ich auch google benutzt, jedoch waren die Funde nicht besonders hilfreich.
    Ich bin zum Beispiel auf das mycsharp-Forum gestossen, wo auf das selbe Problem
    folgendermaßen geantwortet wurde:

    doch kannst du, du musst nur eine Bitmap ohne indiziertes Pixelformat verwenden oder die Bitmap in ein nicht indiziertes Pixelformat umwandeln.

    Naja, ich verstehe es nicht und wäre sehr für eure Hilfe dankbar.

    Somit verbleibe ich mit einem freundlichem Gruß und der Hoffnung auf eine schnelle, hilfreiche Antwort.



  • Versuch mal deine src_bitmap mit PixelFormat.Format32bppRgb zu klonen und dann mit dem Klon weiter zu arbeiten...



  • Wenn du nur auf einzelne Pixel zugreifen willst, dann kannst du die Bitmap locken. Dabei kannst du ein PixelFormat angeben welches nicht unbedingt dem der Bitmap entsprechen muss:

    http://www.bobpowell.net/lockingbits.htm

    Ist auch viel viel schneller wenn man viele Pixel einer Bitmap lesen und/oder schreiben möchte.


Log in to reply