Tag: 位图

C#Mono {new Bitmap(“fileName”);}只是挂在OSX上

当尝试使用mono的版本的System.Drawing.Bitmap对象在OSX 10.7.3上加载“.bmp”,“。png”或“.jpg”时,应用程序只会挂起。 我没有得到任何错误,应用程序只是卡在Bitmaps构造函数上… 当我在(Arch)Linux或Windows上运行相同的代码时,一切正常。 public static void Main (string[] args) { using (var bitmap = new Bitmap(“/……/image.bmp”)) { } Console.WriteLine (“Hello World!”);// Never gets here… } 如果我在调试模式下暂停应用程序,它会打开“反汇编”窗口并显示它停留在这一行: call Status System.Drawing.GDIPlus:GdiplusStartup (UInt64, GdiplusStartupInput, GdiplusStartupOutput) 注意:在调试模式下暂停应用程序几次后,它“神奇地”开始工作。 我承诺我没有更改任何代码。 谁知道什么可以导致“System.Drawing.GDIPlus”挂起所以我知道如何避免它? 是否有单声道的codex设置文件或可能有垃圾箱的东西?

C#更新picturebox中的位图

我正在进行一个屏幕共享项目,我不断收到来自Socket的小块图像,需要在我拥有的某个初始dekstop位图上更新它们。 基本上我不断从套接字读取数据(数据存储为jpeg图像),使用Image.FromStream()检索图像并将接收到的块像素复制到完整的主位图(在特定位置X和Y ,我也得到从套接字) – 这是初始图像更新的方式。 但后来我需要在Picturebox上显示它的Picturebox我处理Paint事件并再次重新绘制它 – 整个初始图像,这是非常大的(在我的情况下是1920X1080)。 这是我的代码: private void MainScreenThread() { ReadData();//reading data from socket. initial = bufferToJpeg();//first intial full screen image. pictureBox1.Paint += pictureBox1_Paint;//activating the paint event. while (true) { int pos = ReadData(); x = BlockX();//where to draw :X y = BlockY();//where to draw :Y Bitmap block = bufferToJpeg();//constantly reciving blocks. […]

将opencv图像cv :: Mat格式转换为C#BitmapImage

我写了这个示例代码来解释我的问题。 我在VS 2013中有一个解决方案,包含一个C#项目和一个C ++项目。 我尝试用C ++(x86)中的OpenCV读取图像。 并希望将C#x86项目(使用CLR模式)传递给Bitmap Object和BitmapImage对象以用作WPF ImageSource。 我的C ++代码: Bitmap^ SomeClass::Test(System::String^ imgFileName) { auto fileName = msclr::interop::marshal_as(imgFileName); Mat img = imread(fileName); //Do something auto bmp = gcnew Bitmap(img.cols, img.rows, img.step, Imaging::PixelFormat::Format24bppRgb, (IntPtr)img.data); bmp->Save(“InC++Side.png”); return bmp; } 我的C#代码: private void ImageTester(object sender, RoutedEventArgs e) { var image = testClass.Test(“test.png”); image.Save(“InC#Side.png”); bg.Source = ConvertToBitmapImageFromBitmap(image); } […]

如何将位图像素复制到其他位图,保留C#中的alpha透明度?

有些人可以重写以下函数来使用任何优化机制吗? 我很确定这不是继续进行逐像素复制的方法。 我读过有关AlphaBlend或BitBlt的内容 ,但我不习惯本机代码。 public static Bitmap GetAlphaBitmap(Bitmap srcBitmap) { Bitmap result = new Bitmap(srcBitmap.Width, srcBitmap.Height, PixelFormat.Format32bppArgb); Rectangle bmpBounds = new Rectangle(0, 0, srcBitmap.Width, srcBitmap.Height); BitmapData srcData = srcBitmap.LockBits(bmpBounds, ImageLockMode.ReadOnly, srcBitmap.PixelFormat); try { for (int y = 0; y <= srcData.Height – 1; y++) { for (int x = 0; x <= srcData.Width – 1; […]

PDF到bmp图像(12页= 12张图片)

我必须逐页解构/提取pdf到位图图像 。 这将通过我设置的Web服务在服务器上完成。 我怎么做到这一点? 它必须是逐页的(每个图像1页)。 我真的被卡住了,我知道你们中的一个天才有我一直在寻找的答案。 我试过: http : //www.pdfsharp.net/wiki/ExportImages-sample.ashx哪个无法正常工作。 我正在使用C#; PDF不受密码保护; 如果这个解决方案可以将Uri作为PDF位置的参数,那就太棒了! 解决方案根本不应该依赖于Acrobat PDF Reader 我一直在努力尝试使用MigraDoc和PDFSharp及其替代方案来解决上述问题。 任何帮助/建议/代码将不胜感激!! 提前致谢!

当处理非常大的图像时,如何避免位图内存不足:即10.000.000像素及以上

目前我正在开发一个加载非常大的图像的系统,最小宽度x高度= = 10.000.000像素。 但是用户上传图像的比例通常与我们的要求比率不匹配,所以我必须将其裁剪为适当的比例,但是当使用System.Drawing位图裁剪它时,我总是得到SytemOutOfMemoryexception。 我尝试使用正确的RectangleF但没有运气的Bitmap.Clone和Graphic.DrawImage。 反正有没有得到outofmemoryexception,或者System.Drawing库有什么替代方法可以轻松完成这项任务吗? 我的代码从用户上传文件加载图像: var fileBinary = new byte[stream.Length]; stream.Read(fileBinary, 0, fileBinary.Length); stream.Position = 0; var fileExtension = Path.GetExtension(fileName); using (Image image = Image.FromStream(stream, false, false)) { //validation and check ratio CropImage(image, PORTRAIT_RATIO, fileExtension); } 而CropImagefunction: //Crop Image from center with predefine ratio private byte[] CropImage(Image sourceImg, float ratio, string fileExtension) var […]

从UIElement生成BitmapSource

我试图生成一个基于UIElement的BitmapFrame 。 这是我的function: private BitmapFrame RenderToBitmap2() { RenderTargetBitmap renderBitmap = new RenderTargetBitmap(200, 200, 96, 96, PixelFormats.Pbgra32); DrawingVisual drawingVisual = new DrawingVisual(); DrawingContext drawingContext = drawingVisual.RenderOpen(); VisualBrush aVisualBrush = new VisualBrush(GenerateTestStackPanel()); drawingContext.DrawRectangle(aVisualBrush, new Pen(Brushes.Green, 2), new Rect(new Size(150, 150))); drawingContext.Close(); renderBitmap.Render(drawingVisual); return BitmapFrame.Create(renderBitmap); } 出于测试和调试的目的,我使用了一个额外的函数来创建一个简单的StackFrame,它应该创建一个可以表示的有效视觉元素: private StackPanel GenerateTestStackPanel() { // Create a red Ellipse. Ellipse myEllipse […]

将位图保存到MemoryStream中

我应该分配内存还是只分配内存流的对象:这样可以吗? MemoryStream memoryStream = new MemoryStream(); bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); 如果我需要定义MemoryStream大小,我如何从Bitmap获取它?

如何将图像放在Bitmap的图片框中

是否可以从内存中加载图片( byte[]或stream或Bitmap )而不将其保存到磁盘? 这是我用来将byte[]数组转换为Bitmap : unsafe { fixed (byte* ptr = Misc.ConvertFromUInt32Array(image)) { Bitmap bmp = new Bitmap(200, 64, 800, PixelFormat.Format32bppRgb, new IntPtr(ptr)); bmp.RotateFlip(RotateFlipType.Rotate180FlipX); bmp.MakeTransparent(Color.Black); bmp.Save(“test.bmp”); } } 我可以将Bitmap放在表单上的图片框中,而不是使用Bmp.save()吗?

寻找绘制科学数据的框架:2d / 3d

我需要想象一些科学计算。 我通常更喜欢重复使用代码,如果已经有一个好的可用而不是每次发明轮子,这就是我要问的原因。 我需要一个C#代码来绘制2d (y=f(x))和3d (z=f(x,y))数字数据集(其中任何轴可以是float,int)的图表(只输出位图就可以了)或日期时间),有时合并。 如果我在这里点击左侧导航栏中的3D,我可以看到我需要的东西。 但最便宜的版本在那里花费759美元,看起来对一个东欧学生的业余爱好项目可怕:-(