I am getting error:
"A Graphics object cannot be created from an image that has an indexed pixel format."
in function:
public static void AdjustImage(ImageAttributes imageAttributes, Image image) { Rectangle rect = new Rectangle(0, 0, image.Width, image.Height); Graphics g = Graphics.FromImage(image); g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(image, rect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imageAttributes); g.Dispose(); }
I would like to ask you, how can I fix it?
An indexed image uses direct mapping of pixel values to colormap values. The color of each image pixel is determined by using the corresponding value of X as an index into map . The value 1 points to the first row in map , the value 2 points to the second row, and so on.
Refering to this, it can be solved by creating a blank bitmap with the same dimensions and the correct PixelFormat and the draw on that bitmap.
// The original bitmap with the wrong pixel format. // You can check the pixel format with originalBmp.PixelFormat Bitmap originalBmp = new (Bitmap)Image.FromFile("YourFileName.gif"); // Create a blank bitmap with the same dimensions Bitmap tempBitmap = new Bitmap(originalBmp.Width, originalBmp.Height); // From this bitmap, the graphics can be obtained, because it has the right PixelFormat using(Graphics g = Graphics.FromImage(tempBitmap)) { // Draw the original bitmap onto the graphics of the new bitmap g.DrawImage(originalBmp, 0, 0); // Use g to do whatever you like g.DrawLine(...); } // Use tempBitmap as you would have used originalBmp return tempBitmap;
The simplest way is to create a new image like this:
Bitmap EditableImg = new Bitmap(IndexedImg);
It creates a new image exactly like the original was with all its contents.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With