Tag: 图像处理

C#从中心裁剪图像

我正在使用.NET(4.5)MVC(4.0)C#(5.0)开发应用程序。 我想从我已经拥有的图像生成图像缩略图。 现在的要求是它应该从图像中心生成最大方形部分的缩略图而不拉伸除了图像之外的整个图像是方形尺寸。 例如我的原始图像大小:578×700我想生成占位符大小的缩略图:200×150,185×138,140×140,89×66,80×80,45×45,28×28 我创建了我的下面的代码,但没有得到确切的结果。 这是生成缩略图的核心方法 public string GenerateThumbnailFromImage(string imageFilePath, int thumbWidth, int thumbHeight) { try { //Check if file exist if (File.Exists(imageFilePath)) { //bool preserveAspectRatio = true; string oldFilePath = imageFilePath; string folderPath = Path.GetDirectoryName(imageFilePath); string filename = Path.GetFileNameWithoutExtension(imageFilePath); //Rename file with thumbnail size filename = filename + “_” + thumbWidth.ToString() + Path.GetExtension(imageFilePath); imageFilePath […]

在.NET中打开巨大的TIF并将部件复制到新图像

我正在寻找一个可以打开和复制大型TIFF文件部分的库。 我查看了LibTiff.Net ,它可以非常快速地打开文件,但它没有任何用于裁剪或复制图像部分的function。 我的图像向上是100,000 x 100,000像素并且创建该大小的System.Drawing.Bitmap会使应用程序崩溃,因此首先转换为Bitmap不是一个选项。 任何人都可以推荐.NET库吗?

图像焦点计算

我正在尝试为一些测试自动化工作开发图像聚焦算法。 我选择使用AForge.net,因为它看起来像一个很好的成熟.net友好系统。 不幸的是,我似乎无法从头开始找到有关构建自动对焦算法的信息,所以我给了它最好的尝试: 拍照。 应用sobel边缘检测滤波器,生成灰度边缘轮廓。 生成直方图并保存标准开发。 将相机移近主体一步并拍摄另一张照片。 如果标准开发小于前一个,我们将获得更多关注。 否则,我们已经超过拍摄照片的最佳距离。 有没有更好的办法? 更新:顺便说一下,这有很大的缺陷。 当我超越最佳焦点时,我的“焦点图像”价值继续增长。 你期望抛物线函数看距离/焦点值,但实际上你会得到一些更对数的东西 更新2:好的,所以我回到这个,我们正在探索的当前方法给出了一些已知的边缘(好吧,所以我确切地知道图片中的对象是什么),我做了手动像素强度比较。 随着结果图变得越来越陡峭,我得到了更多关注。 一旦核心算法从matlab移植到c#(是的,matlab ..:S),我就会发布代码 更新3:yay最终更新。 又回来了。 最终的代码如下所示: 第1步:从图像列表中获取图像(我通过聚焦点拍摄了一百张照片) 第2步:找到我正在聚焦的物体的边缘(在我的情况下,它是一个总是在同一个地方的矩形物体,所以我裁剪出一个边缘的HIGH和NARROW矩形) 第3步:获取该裁剪图像的Horizo​​ntalIntensityStatistics(Aforge.net类)。 第4步:获取直方图(灰色,在我的情况下) 步骤5:找到直方图值的导数 第6步:当你的坡度最大时,就是你处于最集中的地方。

什么是真正的黑白色矩阵?

我想将图像从颜色转换为黑白(即没有灰度,只有黑白)。 有没有人有一个很好的色彩矩阵来实现这一目标?

如何修复书页的灰暗图像

我有1000页的图书页面,它的文字像这一块一样暗淡 现在我尝试修复它以便更清楚地阅读,我使用此代码 private Bitmap repairImage(Bitmap bmp) { Color cc=Color.FromArgb(255, 251, 251, 251); for (int x = 0; x < bmp.Width; x++) { for (int y = 0; y 238) { bmp.SetPixel(x, y, Color.White); } else { bmp.SetPixel(x, y, Color.Black); } } } return bmp; } 由于图像尺寸为1168 x 1807,需要花费大量时间才能完成修复,它正好循环2110576次循环。 有没有其他方法可以解决这个问题? 谢谢。

保存位图时背景变黑 – C#

我目前正在尝试保存位图图像,但背景正在变为黑色。 我可以“另存为”图像完美。 我也可以“保存”图像。 这更难,因为我不得不覆盖现有的图像。 但是,当我“保存”我的图像时,背景变黑了。 我不知道是什么导致了它。 这是我的代码: Bitmap tempImage = new Bitmap(DrawArea); DrawArea.Dispose(); if (extension == “.jpeg”) tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg); else tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp); DrawArea = new Bitmap(tempImage); pictureBox1.Image = DrawArea; tempImage.Dispose();

.NET中最快的图像大小调整

我需要最快的库来调整全尺寸图像(一些尺寸高达9MB)到多种尺寸 。 这是场景: 用户上传照片 FileSystemWatcher正在服务中运行,观察丢弃位置(在SAN上) 当出现新照片时,该服务将以完整的JPEG质量创建4个版本的图像: 100px宽 320px宽 640px宽 1280宽 如果库是C / C ++或其他任何东西,我都不会感到困惑,只要我可以通过.NET进入它就很酷。 此外,还需要扩展到可能有1,000个活跃用户。 让我知道你的想法 :)

使用lockbits进行图像处理,替代getpixel?

我试图使用lockbits增加我的图像检测类,但这会导致代码出现问题,因此无法运行。 我怎样才能同时使用lockbits和getpixel来加速图像检测,或者有人能给我看一个同样快的替代方案吗? 码: static IntPtr Iptr = IntPtr.Zero; static BitmapData bitmapData = null; static public byte[] Pixels { get; set; } static public int Depth { get; private set; } static public int Width { get; private set; } static public int Height { get; private set; } static public void LockBits(Bitmap source) { // […]

更改位图图像的不透明度

我有一个有图像的表格。 我正在使用滑块来更改图像的不透明度。 所以在滑块的“ValueChanged”事件中,我调用以下方法来更改不透明度。 //Setting the opacity of the image public static Image SetImgOpacity(Image imgPic, float imgOpac) { Bitmap bmpPic = new Bitmap(imgPic.Width, imgPic.Height); Graphics gfxPic = Graphics.FromImage(bmpPic); ColorMatrix cmxPic = new ColorMatrix(); cmxPic.Matrix33 = imgOpac; ImageAttributes iaPic = new ImageAttributes(); iaPic.SetColorMatrix(cmxPic, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); gfxPic.DrawImage(imgPic, new Rectangle(0, 0, bmpPic.Width, bmpPic.Height), 0, 0, imgPic.Width, imgPic.Height, GraphicsUnit.Pixel, iaPic); […]

如何在C#和.NET 3.5中减小图像的大小?

我有一个屏幕截图,我在我的移动应用程序中。 在磁盘上保存为png时,屏幕截图大约需要32 KB。 我将这些发送到中央SQL Server,32 KB太大了,我需要存储该屏幕截图(每天大约2500次)。 有什么样的技巧可以让它来节省更小的? 这是我现在使用的代码,它从Bitmap到字节(发送到服务器进行存储): MemoryStream stream = new MemoryStream(); _signatureImage.Save(stream, ImageFormat.Png); return stream.ToArray(); _signatureImage是一个Bitmap ,是有问题的屏幕截图。 这是我正在保存的屏幕截图的示例: 想到的东西(但我不知道怎么做): 减少图像的实际高度和宽度(但希望以一种不会扭曲它的方式)。 将其更改为黑白图像(不确定我是否会看到任何真正的空间节省) 压缩它(我不喜欢这个,因为它不能从数据库中读取)。 注意,这一切都必须以编程方式完成,并且不能花费很长时间,因此复杂的图像处理已经完成。 谢谢你的帮助。