Praca w programie Visual Studio 2008. Próbuję narysować obraz PNG i zapisać go ponownie.Problem z obrazami PNG w języku C#
I wykonaj następujące czynności:
private Image img = Image.FromFile("file.png");
private Graphics newGraphics;
A w konstruktorze:
newGraphics = Graphics.FromImage(img);
Budowanie rozwiązanie daje żadnych błędów. Gdy próbuję go uruchomić, mam to:
obiekt graficzny nie mogą być tworzone z obrazu, który ma indeksowany formatu pikseli.
Nie mam dużego doświadczenia w korzystaniu z obrazów w języku C#. Co to oznacza i jak mogę temu zaradzić?
EDYCJA: poprzez debugowanie, Visual Studio mówi mi, że obraz ma format pikseli w formacie format8bppindexed
.
Więc jeśli nie mogę korzystać z klasy Graphics, czego używam?
EDIT2: Po przeczytaniu this, myślę, że można bezpiecznie założyć, że lepiej trzymać się plików JPG podczas pracy z GDI +, nie?
Edit3: moi using-deklaracje:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
Wszelkie powodzenia tej metody? http://www.c-sharpcorner.com/UploadFile/rrraman/graphicsObject08232007102733AM/graphicsObject.aspx – Greg
Używam plików PNG z obiektem Graphics przez cały czas. Opublikuj link do pliku PNG, którego używamy, a zobaczymy, co jest z nim nie tak. – MusiGenesis
Wewnętrznie GDI współpracuje z bitmapami, JPG jest skompresowany i niezbyt świetnie posiada skompresowany obraz do pracy z nieprzetworzonymi danymi. Twój obraz ma 8bppIndexed, jest to format bitmapowy, w którym kolory są przechowywane w palecie, a nie w pikselach. Obiekty Graphics nie mogą bezpośrednio modyfikować wartości pikseli, ponieważ to ich nie zmieni. Musisz przekonwertować go na 24bppRGB – badbod99