转自:http://blog.csdn.net/pengjian444/article/details/50990374
首先呢我们要明白各种图片格式,不同的图片格式成像也是不同的,对于索引类型的图片,其文件头部有一个颜色表,这个表按照一定的规律存储了所有的可能在这张图片中出现的颜色。它的每一个点的像素值(ARGB)并不是直接存储的。在存储具体点的数据的地方之只是存储其在颜色表中的索引,在进行的解码的时候,读取索引然后在颜色表中查找,找到对应所以的颜色值之后将其显示出来作为这个点的颜色值。
System.Drawing.Image不支持通过索引的方式存储图片数据的图片实现setpixel,-_-\\心累(我觉得完全可以实现的啊)
可是这又有什么关系呢!
我们可以通过Bitmap.Clone()来将索引图片的像素数据拷贝到我们新建的图片上,并且在函数中指定我们新图片的pixelFormat (这次就不要设置成什么索引类型的啦!)接下来就是对我们新建的图片进行操作啦。。。想怎么玩就怎么玩的!
Bitmap indexImg = new Bitmap(“fileName.jpg”);
Bitmap newImg = indexImg.Clone(new Rectangle(0,0,indexImg.Width,indexImg.Height),PixelFormat.Format24bppRgb);
// do something you want
// example : setPixel() …..
// balabalabla