加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C#/ GDI中从Format8bppIndexed转换为Format24bppRgb

发布时间:2020-12-15 17:41:59 所属栏目:百科 来源:网络整理
导读:好吧,我有一个以8位索引格式从外部应用程序传来的图像.我需要将此图像转换为完全相同大小的24位格式. 我已经尝试创建一个相同大小和类型为Format24bppRgb的新Bitmap,然后使用Graphics对象在它上面绘制8位图像,然后将其保存为Bmp.这种方法不会出错,但是当我打
好吧,我有一个以8位索引格式从外部应用程序传来的图像.我需要将此图像转换为完全相同大小的24位格式.

我已经尝试创建一个相同大小和类型为Format24bppRgb的新Bitmap,然后使用Graphics对象在它上面绘制8位图像,然后将其保存为Bmp.这种方法不会出错,但是当我打开生成的图像时,BMP标题具有各种时髦的值.高度和宽度都是巨大的,此外,还有压缩标志和其他一些有趣(和大)的值.不幸的是,我的特殊要求是将此文件传递给特定的打印机驱动程序,该驱动程序需要具有特定标头值的24位图像(我试图通过GDI实现)

有人知道将索引文件“上转换”为非索引的24位文件的示例吗?如果不是一个例子,我应该从哪个路径开始编写自己的路径?

-Kevin Grossnicklaus
kvgros@sseinc.com

解决方法

我使用下面的代码将图像从8bpp“上转换”到24bpp.使用十六进制编辑器检查生成的24bpp文件并与8bpp文件进行比较,显示两个文件中的高度和宽度没有差异.也就是说,8bpp图像是1600×1200,而24bpp图像具有相同的值.
private static void ConvertTo24(string inputFileName,string outputFileName)
    {
        Bitmap bmpIn = (Bitmap)Bitmap.FromFile(inputFileName);

        Bitmap converted = new Bitmap(bmpIn.Width,bmpIn.Height,PixelFormat.Format24bppRgb);
        using (Graphics g = Graphics.FromImage(converted))
        {
            // Prevent DPI conversion
            g.PageUnit = GraphicsUnit.Pixel
            // Draw the image
            g.DrawImageUnscaled(bmpIn,0);
        }
        converted.Save(outputFileName,ImageFormat.Bmp);
    }

标题中的其他所有内容看起来都很合理,图像在我的系统上显示相同.你看到了什么“时髦的价值观”?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读