Tag: 位图

为什么这个位图图像在加载后会改变它的大小?

快速提问: 我有这个1000 x 1000位图图像: 我用这个例程来加载它: private BitmapSource initialBitmap = new BitmapImage(new Uri(“C:\\Users\\…\\Desktop\\Original.bmp”)); 为什么在我加载之后,在我跨过上面的线后,我看到它是800 x 800 ? PS我希望它是1000 x 1000并且不使用任何Resize函数。 它工作,突然它是800 * 800!

打印到Zebra打印机会产生模糊和模糊的图像

我写了一个库,它从一些用户输入创建一个位图图像。 然后使用斑马打印机打印该位图。 我遇到的问题是斑马打印机打印的图像上的一切都非常微弱和模糊,但如果我将位图打印到激光打印机,它看起来很正常。 有没有人遇到这个,如果是这样,他们是如何解决它的? 我已经尝试了几乎所有我能想到的打印机设置。 更新了我如何创建位图图像的代码。 public static Bitmap GenerateLabel(T obj, XmlDocument template) { try { int width = Convert.ToInt32(template.SelectSingleNode(“/LABELS/@width”).Value); int height = Convert.ToInt32(template.SelectSingleNode(“/LABELS/@height”).Value); if (obj == null || height <= 0 || width <= 0) throw new ArgumentException("Nothing to print"); Bitmap bLabel = new Bitmap(width, height); Graphics g = Graphics.FromImage(bLabel); XmlNodeList fieldList = template.SelectNodes("/LABELS/LABEL"); […]

使用内存映射视图查看大型位图图像

我有一个非常大的位图,我正在尝试使用C#应用程序查看。 这里的主要问题是我无法将其直接加载到内存中,因此我尝试使用内存映射视图库来加载它, 参考参考 文献1 , 参考文献2 , 参考文献3 , 参考文献4和参考文献五 。 到目前为止我所得到的是: –根据需要读取部分位图(例如我读取前200行)。 从我读取的行创建另一个位图并显示它。 Porblem: –重建的位图图像部分丢失颜色信息并向上显示。 示例: – [注意我在这里使用小尺寸图像并尝试显示其中一部分用于测试目的] 真实的形象: – 输出应该是(选择前200行并重建较小的位图并显示它): – 正如您所看到的,重建的图像是无色的并且是颠倒的。 现在代码部分: – 类BMPMMF,负责整个过程 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.IO.MemoryMappedFiles; using System.Drawing; using System.Runtime.InteropServices; using System.Drawing.Imaging; namespace BMPViewer { class BMPMMF { /// /// It opens […]

以像素为单位快速比较两个Bitmap对象

我目前正在实现一个接受两个位图对象的方法。 我们可以假设所述对象具有相同的尺寸等。该方法的返回是像素变化的列表(这存储在自制对象中)。 这是以迭代的方式开发的,因此当前的实现是一个基本的…只需通过每个像素并将其与其对应物进行比较。 这种产生变化的方法比可接受的慢(500ms左右),因此我正在寻找更快的过程。 我想到的想法是将图像分解为条带并在新线程上运行每个比较,或者首先将屏幕区域作为对象进行比较,然后根据需要进行详细检查。 当前代码供您理解…… for (int x = 0; x < screenShotBMP.Width; x++) { for (int y = 0; y < screenShotBMP.Height; y++) { if (screenShotBMP.GetPixel(x, y) != _PreviousFrame.GetPixel(x, y)) { _pixelChanges.Add(new PixelChangeJob(screenShotBMP.GetPixel(x,y), x, y)); } } } 正如您将从代码中扣除的那样,该类的概念是截取屏幕截图并从之前拍摄的屏幕截图中生成像素更改列表。

System.Drawing – 参数无效

经过一些更多的测试后,我发现这个问题可能是由于图像以某种方式没有被及时加载以克隆到位图并显示。 这是可能的还是没有? 注意:是的,标题中存在此错误还有其他问题,但从一些研究来看,它似乎是一个含糊不清的错误,有许多可能的原因。 我没有发现与我相同的情况有任何问题。 我收到以下错误。 System.ArgumentException was unhandled HResult=-2147024809 Message=Parameter is not valid. Source=System.Drawing 它起源于这段代码。 似乎是随机的(即,有时候它会起作用,有时却不起作用。连续运行的次数越多,没有重新启动VS并重建项目,失败的可能性就越大): private Bitmap GetSprite(bool anim, int tsIndex, int tileIdx) { System.Drawing.Rectangle cloneRect; string prefix = (anim) ? “A” : “S”; using (Bitmap b = new Bitmap(prefix + tsIndex.ToString() + “.png”)) { if (anim) { cloneRect = new System.Drawing.Rectangle(BaseObjects.A_AnimSpriteSets[tsIndex].StaticRecs[tileIdx].X, BaseObjects.A_AnimSpriteSets[tsIndex].StaticRecs[tileIdx].Y, BaseObjects.A_AnimSpriteSets[tsIndex].RecWidth, […]

如何从位图中删除白色背景颜色

我想删除位图中的白色背景颜色 Bitmap capcha = new Bitmap(“C:/image.jpg”); pictureBox1.Image = capcha; 但是我想在我的pictureBox1中显示背景中没有白色的图像

将8位彩色bmp图像转换为8位灰度bmp

这是我的位图对象 Bitmap b = new Bitmap(columns, rows, PixelFormat.Format8bppIndexed); BitmapData bmd = b.LockBits(new Rectangle(0, 0, columns, rows), ImageLockMode.ReadWrite, b.PixelFormat); 如何将其转换为8位灰度位图?

如何在没有混合或过滤的情况下在C#中调整位图图像的大小?

我有一个灰度图像,我想放大,以便我可以更好地看到单个像素。 我已经尝试将平滑模式设置为无和一些不同的插值模式(如此处的其他问题所示),但图像仍然在我看来,好像它们在显示在屏幕上之前仍在进行某种混合。 基本上如果我有一个图像 (White, White, White, Black) 我希望当我放大它说6×6时,它看起来像 (White, White, White, White, White, White White, White, White, White, White, White White, White, White, White, White, White White, White, White, Black, Black, Black White, White, White, Black, Black, Black White, White, White, Black, Black, Black) 黑色和白色区域之间没有褪色,应该看起来像一个正方形。 图像应该看起来更像“像素化”而不是“模糊”

如何将生成的位图加载到PictureBox中?

似乎有很多图片框问题,但我没有找到任何处理将图片框的内容更改为不是简单地从文件加载的位图。 我的应用程序采用一个字节数组并从中生成一个位图。 我真的想避免写入文件作为中间处理步骤。 因为它是一个字节数组,而不是2字节字,我需要使用灰度调色板制作索引位图。 然后我将索引位图转换为普通位图(24位rgb)。 这是导致我出错的代码: pictureBox1.Image = (System.Drawing.Image)bmp2; 当我查看表单(图片框试图绘制)时,线程将简单地停止执行一条消息:“System.Drawing.Image.get_RawFormat()中的无效参数” 我究竟做错了什么? 如何为图片框创建安全位图? 这就是创建“bmp2”的原因: //creating the bitmap from the array System.Drawing.Bitmap bmp1 = new System.Drawing.Bitmap(100, 100, 100, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, MyIntPtr); //creating a proper indexed palette System.Drawing.Imaging.ColorPalette GrayPalette = bmp1.Palette; for (int i = 0; i < GrayPalette.Entries.Length; i++) { GrayPalette.Entries[i] = Color.FromArgb(i, i, i); } bmp1.Palette = […]

无法将类型’System.Drawing.Image’隐式转换为’System.Drawing.Bitmap’

声明了一个位图 private Bitmap img1 = null; private Bitmap img2 = null; 从openFileDialog中选择后,图像将被推出。 选定的图像被放置在一个数组中。 imgName = openFD.FileNames; 然后按钮1显示这些图像。 pictureBox1.Image = Image.FromFile(imgName[0]); pictureBox2.Image = Image.FromFile(imgName[1]); 我用这个替换了button1代码 img1 = Image.FromFile(imgName[0]); img2 = Image.FromFile(imgName[1]); 但是会发生错误 无法将类型’System.Drawing.Image’隐式转换为’System.Drawing.Bitmap’ 我试着将代码更改为img1 = Bitmap.FromFile(imgName[0]); 。 但仍然有同样的错误。 有任何建议如何纠正或做到这一点?