Speichern von Bildausschnitten



  • ich möchte eine Bild in verschieden große Abschnitte zerteilen,das zerteilen klappt so weit aber beim speichern habe ich Probleme.Ich kriege beim Aufruf von Save "Der Wert liegt außerhalb des erwarteten Bereichs".BInfo enthält die Höhe ,Weite und Pixel des Bildabschnitts.Die Bytes enthalten keine Bytes über 16 und die Pallete ist 16 Farben groß.Woher kann dieser Fehler kommen?

    foreach (BInfo binfo in binfo)
     {
        c++;
        GifBitmapEncoder encoder = new GifBitmapEncoder();
        encoder.Palette = image.Palette;               
        BitmapFrame frame = BitmapFrame.Create(binfo.Width, binfo.Height, 96, 96, PixelFormats.Indexed4, encoder.Palette, binfo.Bytes.ToArray(), binfo.Width) as BitmapFrame;
        encoder.Frames.Add(frame);
        Stream stream = File.Create("bild_" + c.ToString() + ".gif");
        encoder.Save(stream);
        stream.Close();
        stream.Dispose();
    }
    

  • Administrator

    Wie lautet denn der Name der Exceptions? IndexOutOfRangeException ? Hast du schon mal überprüft, wie gross das Byte-Array ist, welches binfo.Bytes.ToArray() zurückgibt?
    Und wie hast du die restlichen Werte geprüft, welche nach deinem Text stimmen sollen? Wirklich zur Laufzeit überprüft (z.B. mit dem Debugger)? Oder nimmst du einfach nur an, dass die Werte stimmen?

    Grüssli



  • Ich habe mir die Werte im Debugger angesehen.Aber ich brauche jetzt keine Lösung für dieses Problem,da ich die einzelnen Buchstaben als ASCIIart im Trace überprüft habe.


Log in to reply