C#/.NET

C# 从 System.Drawing.Bitmap 高效获取像素数据

我在 HDD 上有几个 (~2GB) 原始 24bpp RGB 文件.现在我想检索它的一部分并将其缩放到所需的大小. (唯一允许的比例是 1, 1/2, 1/4, 1/8, ..., 1/256) 所以我目前正在将感兴趣的矩形中的每一行读取到一个数组中,这给我留下了一个高度正确但宽度错误的位图. 下一步,我将从新创建的数组中创建一个位图. 这是通过使用指针完成的,因此不涉及数据复制 ..
发布时间:2022-01-06 11:49:48 C#/.NET

将位图转换为单色

我正在尝试将图像保存为单色(黑白,1 位深度),但我不知道该怎么做. 我从 png 开始并转换为位图进行打印(它是热敏打印机,无论如何只支持黑色 - 如果我尝试将它们作为彩色/灰度发送,它对于大图像的速度会很慢). 到目前为止,我的代码将其转换为位图非常简单,但它保留了原始颜色深度. Image image = Image.FromFile("C:\\test.png");byte[ ..
发布时间:2022-01-06 11:48:48 C#/.NET

如何在 C# 中从 byte[] 创建 bmp 文件

我在 TCP 客户端接收到一个 byte[] 数组.该数组包含一个 24 位 RGB 位图文件.如何创建具有给定宽度、高度和数据的位图文件? 在 C++ 中我使用这个 int WriteBitmapFile(const char *filename, int width, int height, unsigned char *imageData){文件 *filePtr;//文件指针BIT ..
发布时间:2022-01-06 11:46:16 C#/.NET

GZipStream 和 DeflateStream 不会解压缩所有字节

我需要一种在 .net 中压缩图像的方法,所以我研究了使用 .net GZipStream 类(或 DeflateStream).但是我发现解压并不总是成功,有时图像可以解压得很好,有时我会收到 GDI+ 错误,表明某些东西已损坏. 在调查这个问题后,我发现解压没有返回它压缩的所有字节.所以如果我压缩了 2257974 个字节,我有时只会得到 2257870 个字节(实数). 最有趣的 ..
发布时间:2022-01-06 11:45:51 C#/.NET

LockBits 图像旋转方法不起作用?

大家好.在厌倦了 Get/Set Pixel 和 RotateTransfom 的缓慢性能和古怪行为之后,我求助于使用 LockBits 进行 2d 位图图像旋转.所以这是我想出的代码,据我估计,它应该可以完美运行.没有. private static void InternalRotateImage(Bitmap originalBitmap, BitmaprotatedBitmap, Poi ..
发布时间:2022-01-06 11:44:34 C#/.NET

Bitmap.LockBits 是否“固定"?位图进入内存?

我最近经常使用锁定位图,并且不断收到“试图访问无效内存"错误.这主要是因为位图已在内存中移动.有些人使用 GCHandle.Alloc() 在 CLR 中分配内存并固定它.Bitmap.LockBits() 做同样的事情吗?我不明白“锁定"内存和“固定"内存之间的区别.您能否解释一下术语和差异(如果有)? 解决方案 GCHandle.Alloc 是一种更通用的方法,它允许您为任何托管对象分 ..
发布时间:2022-01-06 11:43:31 C#/.NET

将现有图形转换为位图

我正在为交易软件(C#、w​​informs、.NET 3.5)编写一个插件,我想在包含数据的面板(比如 ChartPanel)上绘制一个十字光标画画可能很贵.到目前为止,我所做的是: 我在面板中添加了一个 CursorControl 此CursorControl 位于主绘图面板上方,以便覆盖整个区域 它是 Enabled = false 以便所有输入事件都传递给父级图表面板 实现了它 ..
发布时间:2022-01-06 11:42:53 C#/.NET

处理大型位图(最大 3GB)

我正在做一些大学项目,但遇到了内存问题.我加载了一个位图,它在硬盘上占用了大约 1.5GB 的空间,代码如下: Bitmap bmp = new Bitmap(pathToFile); 问题是新创建的 Bitmap 对象使用了大约 3.5GB 的 RAM,这是我无法理解的(这真是大包装:E).我需要访问像素数组,Bitmap 类的使用真的很有帮助(我稍后使用 LockBits() 方法,并处理 ..
发布时间:2022-01-06 11:42:27 C#/.NET

从 C# 中的位图创建一个全新的位图副本

我需要另一个位图的位图深层副本.现在,大多数解决方案都说类似this,这不是深拷贝.这意味着当我锁定原始位图时,副本也会被锁定,因为克隆是原始位图的浅拷贝.现在以下似乎对我有用,但我不确定这是否适用于所有情况. public static Bitmap GetCopyOf(Bitmap originalImage){矩形 rect = new Rectangle(0, 0, originalIm ..
发布时间:2022-01-06 11:41:45 C#/.NET

如何将位图另存为图标?

我需要保存从图像文件(.png、.jpeg、.bmp)加载的 Bitmap 对象,并将其作为图标 (.ico) 保存到单独的文件中. 首先,我尝试使用 Icon ImageFormat 将 Bitmap 对象保存到文件中: 使用 System.Drawing;位图 bmp = (Bitmap)pictureBox1.Image;bmp.Save(@"C:\icon.ico", Imagin ..
发布时间:2022-01-06 11:40:39 C#/.NET

调整位图图像的大小

我想在保存图像时使用更小的尺寸.我怎样才能调整它的大小?我使用此代码重新绘制图像: Size size = new Size(surface.Width,surface.Height);表面.测量(尺寸);表面.排列(新矩形(大小));//创建一个渲染位图并将表面推向它RenderTargetBitmap renderBitmap =新的 RenderTargetBitmap((int)size ..
发布时间:2022-01-06 11:40:27 C#/.NET

图像或位图中的 C# 麦田圈

我相信这很容易,但似乎找不到任何有答案的人.我有一个图像,我需要从该图像中剪出一个圆形甚至其他形状.我需要将此代码放在 .net c# 中.我在课堂上这样做,所以它不是 wpf 或 winform.我需要传递 x 和 y pos 以及圆的大小. 其他选项是 AForge、ImageStatistics.我需要得到一个圆圈(图像的一部分)并得到 StdDev. 感谢您的帮助.安德鲁 ..
发布时间:2022-01-06 11:38:16 C#/.NET

c# 位图数据中的 RGB 值

我是位图的新手,每像素使用 16 位Format16bppRgb555; 我想从位图数据中提取 RGB 值.这是我的代码 static void Main(string[] args){位图RGBValues();Console.ReadKey();}静态不安全 void BitmapRGBValues(){位图cur = new Bitmap(Screen.PrimaryScreen.B ..
发布时间:2022-01-06 11:34:27 C#/.NET

将图像转换为位图会使背景变黑

我需要将图像转换为位图. 最初以字节形式读取 gif,然后将其转换为图像. 但是当我尝试将图像转换为位图时,显示在我的图片框中的图形在以前是白色时变成了黑色背景. 代码如下: var image = (System.Drawing.Image)value;//Winforms Image 我们想要从中获取 WPF 图像...var bitmap = new System.Wi ..
发布时间:2022-01-06 11:34:00 C#/.NET

如何将弯曲文本渲染为位图?

我目前正在动态创建位图并使用位图中的图形对象在其上绘制一个字符串,如下所示: System.Drawing.Graphics 图 = System.Drawing.Graphics.FromImage(bmp);graph.DrawString(text, font, Brush, new System.Drawing.Point(0, 0)); 这将返回一个矩形位图,其中的字符串从左到右直接 ..
发布时间:2022-01-06 11:33:19 C#/.NET

C# 创建位图时内存不足

我正在创建一个应用程序(Windows 窗体),允许用户根据他们选择的位置(拖动以选择区域)截取屏幕截图.我想添加一个放大的小“预览窗格",以便用户可以更精确地选择他们想要的区域(更大的像素).在 mousemove 事件中,我有以下代码... private void falseDesktop_MouseMove(object sender, MouseEventArgs e){zoomBox ..
发布时间:2022-01-06 11:33:11 C#/.NET