首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在.net紧凑框架中将图像转换为1 bpp位图

在.NET紧凑框架中,将图像转换为1 bpp位图需要使用System.Drawing命名空间中的Bitmap类和Color类。以下是一个简单的示例,说明如何将图像转换为1 bpp位图:

代码语言:csharp
复制
using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace ImageTo1bppBitmap
{
    class Program
    {
        static void Main(string[] args)
        {
            // 加载图像文件
            Bitmap originalBitmap = new Bitmap("path/to/image.jpg");

            // 创建一个新的1 bpp位图
            Bitmap newBitmap = new Bitmap(originalBitmap.Width, originalBitmap.Height, PixelFormat.Format1bppIndexed);

            // 创建一个灰度颜色调色板
            ColorPalette grayPalette = newBitmap.Palette;
            for (int i = 0; i < 2; i++)
            {
                grayPalette.Entries[i] = Color.FromArgb(i, i, i);
            }
            newBitmap.Palette = grayPalette;

            // 将原始图像转换为1 bpp位图
            for (int x = 0; x< originalBitmap.Width; x++)
            {
                for (int y = 0; y< originalBitmap.Height; y++)
                {
                    Color pixelColor = originalBitmap.GetPixel(x, y);
                    int grayValue = (int)((pixelColor.R * 0.3) + (pixelColor.G * 0.59) + (pixelColor.B * 0.11));
                    newBitmap.SetPixel(x, y, Color.FromArgb(grayValue, grayValue, grayValue));
                }
            }

            // 保存1 bpp位图
            newBitmap.Save("path/to/output.bmp", ImageFormat.Bmp);
        }
    }
}

在这个示例中,我们首先加载了一个图像文件,然后创建了一个新的1 bpp位图。我们使用了一个灰度颜色调色板,并将原始图像转换为1 bpp位图。最后,我们将1 bpp位图保存为BMP文件。

请注意,这个示例仅适用于.NET紧凑框架,并且可能不适用于所有图像格式。如果您需要更高效的方法来处理图像,请考虑使用第三方库,如ImageSharp或SixLabors.ImageSharp。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

emwin教程_emwin教程

1.位图显示 emWin 支持三种位图文件形式: .c 文件位图、 .dta 格式流位图和.bmp 格式位图 .c 文件形式的位图必须跟随工程文件一起放置 MCU 的内部 FLASH 中,这就导致...相反流位图可放置在任何存储器中,并可按照与 C 文件位图相同的方式使用 (1)BmpCvt[位图转换器] 作用将位图从PC格式转换为C文件,emwin可使用的位图C文件中定义为 GUI_BITMAP...,就是图像每一行的字节数; 4) BitsPerPixel:位图图像单个像素所占的位数,该参数和上一个参数都与位图的宽 度和颜色格式有关,假设位图使用的颜色格式是 ARGB8888,那么图像单个像素数据就...占 32 位; 5) pData:指向位图像素数据; 6) pPal:调色板,该参数 24 位色及以上的位图中是没有的,只有低于 24 位色的 位图才有调色板; 7) pMethods: emWin...常见的色彩深度有 1bpp、 4bpp、 8bpp、 16bpp、 24bpp 和 32bpp。 像素格式 (pixel format),它表示为一个像素的颜色信息以什么样的方式和顺序进行存储。

5.3K40

C#中使用FreeImage库加载Bmp、JPG、PNG、PCX、TGA、PSD等25种格式的图像(源码)。

://bbs.csdn.net/topics/390510431 用pictureBox显示一个黑白8bit图像,如何消除颗粒感       用于测试的原始的JPG图像: http://files.cnblogs.com.../Imageshop/img01.rar       这个帖子中,作者的需要加载一副灰度的8位的PG格式图像,但是利用.net的Bitmap类加载的图像会出现明显颗粒感,由于.net中的Bitmap类是基于...FreeImage 暂时不支持矢量图形和高级图像处理,位图绘制需要由用户来完成。      ...方案1中,Bmp = new Bitmap(Width, Height, Stride, PF, Bits)这条语句实际上调用了GDI+的函数GdipCreateBitmapFromScan0从内存创建位图...Bmp.UnlockBits(BmpData); 正是由于这个原因的存在,如果采用方案1,我们不能在创建GDI+的位图后立马释放FreeImage的创建的DIB对象,即不能调用FreeImage_Free

2.6K100

bmp图像大小biSizeImage算法公式由来

32/8 ,和32/32 * 4都是一样的 情况3: dwRowBit为34位,按理说最少需要4个字节带1位,但是因为必须是4的整数倍,所以应该以8个字节保存。 如何将34位化为8个字节呢?...2.由图像的高度和宽度来计算图像数据的字节数。要注意的是并不是图像的高度乘以图像宽度乘以表示每象 素的字节数就行了,因为BMP的文件格式中规定每行的字节数必须是4的整数倍,不是4的整数倍的要补 零。...所以补齐时需要加上4个字节数即32位 =================================== 1:biWidth = 241 是位图的宽度而不是字节数目 2:(bits)其实需要输入...:(biWidth * biBitCount), 3:WIDTHBYTES()根据输入(biWidth*biBitCount)而得出行字节数,而扫描行字节数乘以扫描行总数(位图的高度biHeight)...,就得出位数据的实际字节数目,估计你是理解错误了. 4:那估计是乱写的,正确是不能把 (xx)/32*4写成(xx)/8的,计算机那是不相等的,举例: width = 2,bpp = 8那么行字节数应该是

2.3K50

ucguiwindows上的移植,及为go语言打造简易跨平台GUI的想法

忙中偷闲,整理了一份目前GUI/图形/图像相关的Go项目列表。见下。欢迎补充。 原生GUI绑定 dlgs是一个跨平台的显示对话框和输入框的Go代码库。 glfw是一个GLFW3绑定库。...电脑上有模拟器啊,这是不是很赞。 且图形界面可以电脑上拖拽设计,这点儿更赞。 ? 为什么网上没有go语言的ucgui的绑定?于是就萌生了用go语言封装ucgui的想法。 ?...ucguilinux上的移植,参见博文:https://blog.csdn.net/yyz_1987/article/details/78380007 后续计划,ucgui的go语言封装 ?...bmp.bmiHeader.biHeight = -LCD_YSIZE; //位图高度 //当图像是倒立显示的时候,把biHeight改为对应的负值 bmp.bmiHeader.biPlanes...pTrans) { LCD_PIXELINDEX Index0, Index1; #if (GUI_USE_MEMDEV_1BPP_FOR_SCREEN == 1) const LCD_PIXELINDEX

1.2K20

【第3版emWin教程】第27章 emWin6.x支持的字体简介

27.3.1 Standard 比例位图字体 比例位图字体的每个字符高度相同、宽度可能不同。像素信息保存为1 bpp(bit per pixel),涵盖整个字符区域。...“啊”字显示效果如下: 27.3.4 Extended 扩展比例位图字体 扩展比例位图字体的每个字符拥有自己的高度和宽度。像素信息保存为1 bpp,仅涵盖字形位图区域。...27.3.5 Extended 2bpp扩展比例位图字体 每个字符高度相同、宽度可能不同。像素信息保存为2 bpp抗锯齿信息,仅涵盖字形位图区域。...注意和前面的Antialiased 2bpp字体的区别。 27.3.6 Extended 4bpp扩展比例位图字体 每个字符高度相同、宽度可能不同。...像素信息保存为4bpp抗锯齿信息,仅涵盖字形位图区域。注意和前面的Antialiased 4bpp字体的区别。

85330

深度学习为图片压缩算法赋能:节省55%带宽

1:卷积神经网络示意图(来源http://blog.csdn.net/hjimce/article/details/47323463) 如何利用卷积神经网络做压缩?...如图2所示,完整的框架包括CNN编码器、量化、反量化、CNN解码器、熵编码、码字估计和码率-失真优化等几个模块。编码器的作用是将图片转换为压缩特征,解码器就是从压缩特征恢复出原始图片。...PSNR用来评估解码后图像恢复质量,BPP用于表示图像中每个像素所占据的比特数,MS-SSIM值用来衡量图片的主观质量,简单来说同等的Rate/BPP下PSNR更高,压缩效果更好,MSSIM更高,主观感受更好...假设每个压缩特征数据单元占据1个比特,则公式可写成:(96*64*192*1)/(768*512)=3,计算结果是3 bit/pixel,从压缩的目的来看,BPP越小越好。...码率控制的目的是保证图像恢复质量的前提下,让压缩特征数据单元中的数据分布尽可能集中、出现数值范围尽可能小,这样我们就可以通过熵编码技术来进一步降低1这个数值,图像压缩率会进一步提升。

1.9K10

C#-GDI+中发生一般性错误的解决办法

创建非索引图像 即使原始映像被索引格式中该方法要求新图像位于每像素 (超过 8 位 -) -, 非索引像素格式。...创建新 位图 的相同大小, 带有是超过 8 位 – – 像素 (BPP) 每像素格式。 使用 Graphics.FromImage() 方法以获取有关二 位图 Graphics 对象。...创建索引映像 此解决办法索引格式创建一个 Bitmap 对象: 构造从流、 从内存, 或从文件原始 位图 。 创建新 位图 具有相同的大小和像素格式作为首 位图 。...使用 Bitmap.LockBits() 方法来锁定整个图像对于两 Bitmap 对象以其本机像素格式。 使用 Marshal.Copy 函数或其他内存复制函数来从首 位图 复制到二 位图 图像位。...创建非索引图像,例如: if (openFileDialog1.ShowDialog() == DialogResult.OK) { //创建一个bitmap类型的bmp变量来读取文件。

91810

你所能用到的BMP格式介绍(一)

字节1A-1B:永远为1,规定如此。        字节1C-1F:取出来是0x18,十进制24,表示每个像素占24个位,也就是3 Byte,对于24位的位图,明显这是正确的。       ...如果你觉得上面的还是很抽象,那么我举一个极端的例子,假设图像的大小是1*2(24位),图像数据区的组成为20,20,20,30,30,30,当 然,实际的bmp中没有逗号,可以看到第一行是2020 20...我们可以根据下面的这个公式进行计算一行的字节数         bpp表示每像素比特数,24位bmp位图中就是24。        ...我想先进行说明的是为什么要压缩,如果你是一个有一定经验的程序员,优化是一个初级的高等程序问题,比如说你一个4bpp图像中一行其实只有两种颜 色,前面100个像素全是白色,后面100个像素全是黑色,那么按照前面说的如果在不压缩的情况下...RLE-8和RLE-4类似,只是8bpp和 4bpp的差别。

1.4K70

干货 | 用深度学习设计图像视频压缩算法:更简洁、更强大

低压缩比情形下(比如压缩比小于 10:1),传统的 JPEG 图像质量有可能比 JPEG2000 好。JPEG2000 高压缩比的情形下,优势才开始明显。...如图 4 所示,完整的框架包括 CNN 编码网络、量化、反量化、CNN 解码、熵编码等几个模块。编码网络的作用是将图片转换为压缩特征,解码网络就是从压缩特征恢复出原始图片。...即使压缩特征中每个数据占据 1 个比特位,可是 8:1 的压缩比我们看来并不是一个很理想的结果。那如何进一步优化算法?再看下 BPP 的计算公式。...假设每个压缩特征数据单元占据 1 个比特,则公式可写成:(96*64*192*1)/(768*512)=3,计算结果是 3 bit/pixel,从压缩的目的来看,BPP 越小越好。...码率控制的目的是保证图像恢复质量的前提下,让压缩特征数据单元中的数据分布尽可能集中、出现数值范围尽可能小,这样我们就可以通过熵编码技术来进一步降低 1 这个数值,图像压缩率会进一步提升。

4.4K100

科研SCI论文图片基础知识详解

图片标注 7.1 字体 7.2 大小 ---- 1. 图片概念 图片是指由图形、图像等构成的平面媒体。图片的格式很多,但总体上可以分为位图和矢量图两大类。...1.2.1 矢量图优点 进行放大、缩小或旋转等操作时图像不会失真。 图像保存的是线条和图块的信息,与分辨率和图像大小无关,文件容量一般较小。...3.2 矢量位图 矢量图可以转换成位图,效果很好和清晰度很高。 其他矢量图形文件都可以转换为PDF文件。...使用photoshop打开这些格式的图片,然后重新保存时选择tiff格式图片。 3.4 位图矢量 位图虽然可以矢量图,但是效果和清晰度不太好,一般不建议这么做。...转换的效果欠佳 介绍一个可以将位图转化成矢量图的网站: https://www.vectorizer.io 没有转过,效果未知 在线格式转换网站 1.ALL TO ALL:http://www.alltoall.net

3.8K10

HybridFlow:将连续性融入掩码码本以实现极低比特率图像压缩

其整体思路是在编码器中将输入图像编码到潜空间中,压缩潜特征以减少传输比特,并在解码器中使用解压缩的潜特征重建输出图像。根据传输信息的类型,LIC 方法大致可分为两类。...本文的贡献在于: 作者介绍了一种用于图像压缩的新型双流框架--HybridFlow,它甚至可以极低的比特率(<0.05 bpp)下实现清晰、忠实的高质量图像重建,超越了以往的方法。...方法 图 1 给出了双流 HybridFlow 工作流程,用于以超低比特率(< 0.05bpp)进行高质量重建。 图 1:用于极端低比特率图像压缩的双流 “HybridFlow ”框架。...复杂性感知模块为进一步减少传输比特提供了一种简单而有效的方法,例如,与统一的 1_4 遮罩计划相比,平均可减少 12.5% bpp,使本文的框架能够更好地服务于极端低比特率的图像压缩场景。...最右边一列描述了使用动态屏蔽的输出图像质量(PSNR),以及与 1_4 均匀遮罩相比减少的 bpp 百分比。 性能比较 比较方法。

14610

使用C#实现对图片内某种颜色的替换

name="g">替换色的RGB的G /// 替换色的RGB的B /// 处理后的结果图像..., int R, int G, int B, int r, int g, int b) { Bitmap bt = new Bitmap(ConvertTo32bpp...,Stride是内存中实际位图每行的宽度,存在一个补齐为4的倍数).然后通过宽度和高度的乘积得到位图在内存中占有的字节(byte)数组大小,进而用Marshal.Copy方法从内存中得到这些位图的像素数据...view=dotnet-plat-ext-5.0 https://blog.csdn.net/qq_42170268/article/details/86573796 作者介绍 木石:菜鸟软件工程师.会一点...cs和bs程序开发,常用C#,偶尔也改改 python脚本写写js之类的,目前一家自动化公司任职,才开始接触视觉检测以及伺服电机梯形图之类的,希望可以保持进步,持续成长下去.

1.3K20

C#中Image , Bitmap 和 BitmapData

1 [DllImport("gdi32")] 2 static extern int DeleteObject(IntPtr o); 3 /// 4 /// bitmap转换为...Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1....LockBits方法和UnlockBits方法:分别锁定和解锁系统内存中的位图像素.基于像素点的图像处理方法中使用LockBits和UnlockBits是一个很好的方式,这两种方法可以使我们指定像素的范围来控制位图的任意一部分...BitmapData类 BitmapData对象指定了位图的属性 1. Height属性:被锁定位图的高度. 2. Width属性:被锁定位图的高度. 3....posScan++] = MapData[posReal++]; } posReal += offset; } return RawMapData; } 至于24位位图

2.7K20

使用不安全代码将 Bitmap 位图转为 WPF 的 ImageSource 以获得高性能和持续小的内存占用

更新于 2017-11-10 06:42 WPF 中将一个现成的 Bitmap 位图转换成 ImageSource 用于显示一个麻烦的事儿...不过产生 Bitmap 来源却非常多,比如屏幕截图、GDI 图、数组或其它非托管框架生成的图片。...官方解释称这是托管和非托管位图相互转换所用的方法。然而此方法有一个很严重的弊端——每次都会生成全新的位图,即便每次 DeleteObject 之后,内存依然不会即时释放。...---- 持续输出图像的时候(例如播放 Gif 图、持续显示屏幕截图等)不及时释放内存非常致命!为了防止重复创建图片,WriteableBitmap 似乎成了比较好的选择。...我的朋友林德熙为此将这段代码简化得只剩下几行代码了:WPF 使用不安全代码快速从数组 WriteableBitmap - 林德熙。

1K20
领券