Tag: 图像处理

在c#中放大/缩小图像

任何人都知道相应的C#代码

剪切透明部分图像

更新后的图片: 非常感谢你,但是我想做一些与众不同的事情,在这里将每个矩形切割为一个sperate图像。让我们先尝试找到蓝色块边界。 听起来很难,但实际上很简单。 看看我到目前为止做了什么: private unsafe Bitmap CodeImage(Bitmap bmp) { Bitmap bmpRes = new Bitmap(bmp.Width, bmp.Height); BitmapData bmData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat); IntPtr scan0 = bmData.Scan0; int stride = bmData.Stride; int nWidth = bmp.Width; int nHeight = bmp.Height; int minX = 10000 ; int maxX = -10000; int minY = 10000; […]

在C#中获取内存中的图像句柄

我有一个函数,可以Handle图像的Handle : DoSomethingWithImage( int imageHandle) { } 在我的主要内容中,我有一个Image myImage ,它驻留在内存中。 如何获取myImage的Handle ,以便我可以将Handle传递给DoSomethingWithImage() ? main() { //memorySTream is a byte[] Image myImage = Image.FromStream(memoryStream, true); DoSomethingWithImage( ??? ); }

从一个图像复制ROI并复制到wpf中的另一个图像

我想开发一个具有以下签名的函数: CopyImage(ImageSource inputImage, Point inTopLeft, Point InBottomRight, ImageSource outputImage, Point outTopLeft); 此函数复制输入图像的一部分(由inTopLeft和inBottomRight定义的ROI)并将其复制到outTopLeft的outputImage。 我可以通过操纵像素在WPF中做到这一点,但我正在寻找一种可以更快地完成它的解决方案。 在WPF中执行此操作的最快方法是什么?

使用c#从图像中裁剪十字矩形

我想要做的是基本上从图像中裁剪一个矩形。 但是,它应该满足一些特殊情况: 我想在图像上裁剪一个有角度的矩形。 我不想旋转图像并裁剪矩形:) 如果裁剪超出图像大小,我不想裁剪空背景色。 我想从起点后面进行裁剪,这将在矩形尺寸完成时从起点开始。 我知道如果我在视觉上展示我想要的东西,我就无法解释清楚: 蓝点是那里的起点,箭头表示裁剪方向。 当裁剪超出图像边界时,它将返回到起始点的后面,当矩形宽度和高度完成时,矩形的末端将处于起始点。 此外,这是我提出的上一个问题: 如何使用c#从图像中裁剪十字矩形? 在这个问题中,我无法预测图像尺寸会出现问题所以我没有要求它。 但现在有案例3.除了案例3,这是完全相同的问题。 我怎么能这样做,有什么建议吗?

转换为真正的8bpp Jpeg

我已经搜索并尝试了在SO,AForge,FreeImage以及更多网站上提供的所有建议,但我无法将图像转换为真正的8bpp图像。 我总是将JPEG保存为24bpp而不是8。 灰度转换后我有一个MemoryBMP(根据myImage.RawFormat),所以当我像这样保存它 myImage.Save(“image.jpg”); 我得到一个3Mb +图像(所以我认为它保存在BMP中),Windows告诉我的是8bpp(但我需要它是JPEG)。 但如果我像这样保存它 myImage.Save(“image_JPEG.jpg”, ImageFormat.Jpeg); 我得到一个400Kb的图像(所以我假设它以JPEG格式保存),但它是24bpp。 有什么想法可以导致这个? 编辑 正如JYelton所说,这是Image.Save()方法的限制,所以我改为使用FreeImage库保存图像:FreeImage.SaveBitmap()就像一个魅力。

从常见图像格式中删除所有元数据?

我正在为一个将处理我们图像处理的项目编写服务。 一个这样的过程应该从提供的byte[]去除所有元数据,并将相同的图像作为byte[] 。 我目前正在处理的方法包括始终将图像转换为Bitmap ,然后将其转换回原始格式并从MemoryStream返回数据。 我还没能测试它,但有些东西告诉我,我将体验到一些质量损失。 如何使用通用格式从任何图像中删除所有元数据? (bmp, gif, png, jpg, icon, tiff) 我不确定如何进一步缩小范围。 如果我得到关于downvotes的一些反馈,那会很好。

如何检查图像的尺寸,以便我可以按比例减少它们以避免失真?

当人们撰写文章时,他们会提交一张照片来说明这一事件。 但是,展示的空间并不宽。 所以,我想减少它们的宽度和/或高度,同时保持它们的原始比例。 否则,图像会失真。 假设最大宽度为300px。 任何比这宽的都会看到它的宽度减少到300px。 但是,我希望将高度降低到相同的比例。 例如:600 x 800将变为300px x 400px。 所以,我需要能够检查尺寸 如何检查这些尺寸? 我什么时候检查它们? (i)上传后,(ii)从数据库中撤回?… 谢谢你的帮助

C#卷积滤波器适用于任何尺寸矩阵(1×1,3×3,5×5,…)未完全应用

我正在为我的项目制作一个卷积滤波器,我设法为任何大小的矩阵制作它,但随着它变大,我注意到并非所有的位都被改变了。 以下是显示问题的图片: 第一个是原件 过滤:模糊9×9 filter:EdgeDetection 9×9: 正如你所看到的,有一条小条纹永远不会改变,随着矩阵变大,条纹也会变大(3×3不可见) 我的卷积矩阵类: public class ConvMatrix { public int Factor = 1; public int Height, Width; public int Offset = 0; public int[,] Arr; //later I assign functions to set these variables … } 过滤function: Bitmap Conv3x3(Bitmap b, ConvMatrix m) { if (0 == m.Factor) return b; Bitmap bSrc = […]

.NET中的彩色图像量化

我想减少c#中位图的唯一颜色数量。 我想这样做的原因是,最初使用三种颜色但由于许多因素(包括压缩)而创建的图像现在具有三种以上的颜色(即相邻像素相互影响) 知道如何做到这一点? 解决方案可能是将整个位图从RGB转换为索引颜色系统或某些可应用于单个像素的函数。 任何GDI +或Emgu(opencv)解决方案对我都有好处。