IT技术学习网
IT技术学习网
您的位置: 主页 > 编程技术 > c# >

无法从带有索引像素格式的图像创建graphics对象

2014-12-09 20:47 来源: IT技术学习网原创 阅读:

本文讲述c#中出现"无法从带有索引像素格式的图像创建graphics对象"报错的解决办法。

用c# 给图片添加水印的时候,出现"无法从带有索引像素格式的图像创建graphics对象"错误

解决办法:将索引像素格式的图像转化为位图即可

代码如下:

System.Drawing.Image initImage = System.Drawing.Image.FromStream(fromFileName);
if (IsPixelFormatIndexed(initImage.PixelFormat))  //判断是否是带有索引像素格式的图像
{
    Bitmap bmp = new Bitmap(initImage);   
    nitImage = bmp;           //这样就转换完成了
 }
private static bool IsPixelFormatIndexed(PixelFormat imgPixelFormat)
{
   foreach (PixelFormat pf in indexedPixelFormats)
   {
       if (pf.Equals(imgPixelFormat)) return true;
   }
       return false;
}

网上有的转换代码里,建立位图以后还用DrawImage进行了重画

比如:

Graphics g = Graphics.FromImage(bmp)
g.DrawImage(initImage, 0, 0);

实际测试发现,重画后导致图片尺寸变大,原有尺寸只能截取到一角,并且图片存储大小也剧增

我把重画的代码删了,建立位图后直接赋值给原initimage。这样不仅尺寸没变,大小也没增加。符合我的要求,解决。

无法从带有索引像素格式的图像创建graphics对象
转载需注明出处:IT技术学习网 http://www.itjsxx.com/csharp/727.html

评论文章 无法从带有索引像素格式的图像创建graphics对象
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
IT技术学习网 - 关于我们 - 联系我们 - 版权声明 - 网站地图