Tag: 图像处理

GDI +:如何在背景线程上将Graphics对象渲染为位图?

我想使用GDI +在后台线程上渲染图像。 我找到了关于如何使用GDI +旋转图像的这个例子 ,这是我想做的操作。 private void RotationMenu_Click(object sender, System.EventArgs e) { Graphics g = this.CreateGraphics(); g.Clear(this.BackColor); Bitmap curBitmap = new Bitmap(@”roses.jpg”); g.DrawImage(curBitmap, 0, 0, 200, 200); // Create a Matrix object, call its Rotate method, // and set it as Graphics.Transform Matrix X = new Matrix(); X.Rotate(30); g.Transform = X; // Draw image g.DrawImage(curBitmap, […]

你可以在.NET中打开JPEG,添加文本和重新保存为JPEG吗?

我想在.NET 4.0中编写一个小程序,它将打开一个.jpg(或.jpeg)文件,在图像上添加一行文本,然后将图像重新保存为.jpg。 有谁知道最简单的方法吗? 谢谢你的帮助。

C#为什么Bitmap.Save会忽略Bitmap的PixelFormat?

我需要处理并保存原始bpp中的图像(1 – 对于BnW,8 – 对于灰色,24 – 颜色)。 处理后我总是有24bpp(由于使用Aforge.Net处理)。 我将原始bpp传递给保存function,我正在使用下一个代码进行保存: private static Bitmap changePixelFormat(Bitmap input, PixelFormat format) { Bitmap retval = new Bitmap(input.Width, input.Height, format); retval.SetResolution(input.HorizontalResolution, input.VerticalResolution); Graphics g = Graphics.FromImage(retval); g.DrawImage(input, 0, 0); g.Dispose(); return retval; } 当我通过时: PixelFormat.Format8bppIndexed 我得到一个例外:“图形对象无法以索引像素格式创建图像”: Graphics g = Graphics.FromImage(retval); 我试过下一个代码: Bitmap s = new Bitmap(“gray.jpg”); Bitmap NewPicture = s.Clone(new Rectangle(0, […]

C#mvc图像上传resize服务器端

我有一个web应用程序,用户可以上传图像。 我遇到的当前问题是正在上传的图像以原始格式保存到数据库中。 当在网页上使用图像时,这会导致很多性能问题。 我使用dotTrace来分析应用程序,当从数据库处理图像时,我发现了很多问题。 我的想法是在图像上传到服务器时调整图像大小。 以下示例,我希望应用程序在用户上传新图像时执行此操作; 用户上传图像 在72 dpi时,图像的大小调整为7.500 x 7.500像素 图像正在保存到数据库中 原始文件被处置 唯一存储的图像是上面提到的图像,web应用程序包含动态resize的技术。 我已经在SO上阅读了几个主题。 而且他们中的大多数都指向了ImageMagick的方向。 这个工具在我的公司已经很熟悉,并且在PHP项目中使用。 但是这个工具有没有任何好的和稳定的C#包装器? 我已经找到了下面的工具,但他们要么在Béta发布,Alpha发布,要么当前没有更新。 ImageMagick.NET ImageMagick APP 我也在SO上找到了这个话题。 在本主题中,提供了以下代码示例; private static Image CreateReducedImage(Image imgOrig, Size newSize) { var newBm = new Bitmap(newSize.Width, newSize.Height); using (var newGrapics = Graphics.FromImage(newBm)) { newGrapics.CompositingQuality = CompositingQuality.HighSpeed; newGrapics.SmoothingMode = SmoothingMode.HighSpeed; newGrapics.InterpolationMode = InterpolationMode.HighQualityBicubic; newGrapics.DrawImage(imgOrig, new […]

如何获取图像的一部分并将其用作单独的图像?

我有一个tileset,但所有的tile都在一个图像中。 我希望得到某种位图或图像数组中的每个图块。 是否有某种方法可以做到这一点?

C#加载JPG文件,解压缩BitmapImage

我试图从JPG中提取BitmapImage。 这是我的代码: FileStream fIn = new FileStream(sourceFileName, FileMode.Open); // source JPG Bitmap dImg = new Bitmap(fIn); MemoryStream ms = new MemoryStream(); dImg.Save(ms, ImageFormat.Jpeg); image = new BitmapImage(); image.BeginInit(); image.StreamSource = new MemoryStream(ms.ToArray()); image.EndInit(); ms.Close(); 图像以0×0图像返回,这当然意味着它不起作用。 我该怎么做呢?

Zhang-Suen细化算法C#

我正在尝试按照本指南在C#中编写Zhang-Suen细化算法,而不处理边距。 在函数’zhangsuen’中,我正在从图像’imgUndo’中读取并写入图像’img’。 for循环内的指针dataPtrOrigin_aux用于读取3×3窗口内的9个像素,这样dataPtrOrigin_aux5就是该窗口的中心像素,该窗口将沿着整个图像移动,从左到右,从上到下移动。 在每个像素中,如果validation语句是否为真,则在由指针dataPtrFinal写入的图像中进行相应的改变。 请注意,我将当前像素的邻居存储在8个元素数组中。 因此,它们将按照以下顺序存储: internal static void zhangsuen(Image img, Image imgUndo) { unsafe { MIplImage m = img.MIplImage; //Image to be written. MIplImage mUndo = imgUndo.MIplImage; //Image to be read. byte* dataPtrFinal = (byte*)m.imageData.ToPointer(); byte* dataPtrUndo = (byte*)mUndo.imageData.ToPointer(); int width = img.Width; //Width of the image. int height = img.Height; //Height of the […]

4点变换图像

我需要将位图图像的4个角点从一个位置移动到另一个位置。 任何可以在Windows上运行的代码,最好是C#/ VB.NET,甚至可以帮助如何使用像Paint.NET或Photoshop这样的脚本程序。 Java Advanced Imaging API听起来很有希望。 我需要它用于截屏操作系统,它允许你获得这样的效果: 替代文字http://sofzh.miximages.com/c%23/mondoPerspectiveTrans.gif

自动将位图修剪为最小尺寸?

假设我有一个32bpp ARGB模式的System.Drawing.Bitmap 。 这是一个很大的位图,但它主要是完全透明的像素,中间某处有一个相对较小的图像。 检测“真实”图像边界的快速算法是什么,所以我可以裁掉周围的所有透明像素? 或者,我可以使用.Net中的function吗?

C# – 检测面部和裁剪图像

我正在用C#写一个HttpHandler ,它提供了resize的图像,等等等等……没有麻烦,我们有数以百万计的处理程序用作参考。 问题是我的用户照片采用“传统”尺寸,如4:3和16:9。 但是这个处理程序需要以照片ID大小(4cm×3cm)提供照片,显然需要在用户脸部周围进行裁剪 。 面部位置变化很大(并不总是在图片中心)。 那么,我可以使用什么样的算法来检测面部中心然后围绕这一点裁剪图像?