首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在C#中裁剪图像中的空白

在C#中裁剪图像中的空白
EN

Stack Overflow用户
提问于 2011-11-08 13:35:41
回答 1查看 7.9K关注 0票数 3

可能重复: 从图像中删除周围的空白

我正在寻找帮助裁剪在顶部,底部,左边和右边的图像空白。

我已经找到了以下问题/回答如下,但与答案的链接是到第三方网站,这似乎不再是上线。

EN

回答 1

Stack Overflow用户

发布于 2011-11-08 14:31:35

找到一个解决方案这里,但修改了返回代码部分,允许输入一个空图像,在这种情况下,原始图像将被返回。

代码语言:javascript
运行
AI代码解释
复制
class ImageCrop
{
    public static byte[][] GetRGB(Bitmap bmp)
    {
        BitmapData bmp_data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
        IntPtr ptr = bmp_data.Scan0;
        int num_pixels = bmp.Width * bmp.Height, num_bytes = bmp_data.Stride * bmp.Height, padding = bmp_data.Stride - bmp.Width * 3, i = 0, ct = 1;
        byte[] r = new byte[num_pixels], g = new byte[num_pixels], b = new byte[num_pixels], rgb = new byte[num_bytes];
        System.Runtime.InteropServices.Marshal.Copy(ptr, rgb, 0, num_bytes);

        for (int x = 0; x < num_bytes - 3; x += 3)
        {
            if (x == (bmp_data.Stride * ct - padding)) { x += padding; ct++; };
            r[i] = rgb[x]; g[i] = rgb[x + 1]; b[i] = rgb[x + 2]; i++;
        }
        bmp.UnlockBits(bmp_data);
        return new byte[3][] { r, g, b };
    }
    public static Image AutoCrop(Bitmap bmp)
    {
        //Get an array containing the R,G,B components of each pixel
        var pixels = GetRGB(bmp);

        int h = bmp.Height - 1, w = bmp.Width, top = 0, bottom = h, left = bmp.Width, right = 0, white = 0;
        int tolerance = 95; // 95%

        bool prev_color = false;
        for (int i = 0; i < pixels[0].Length; i++)
        {
            int x = (i % (w)), y = (int)(Math.Floor((decimal)(i / w))), tol = 255 * tolerance / 100;
            if (pixels[0][i] >= tol && pixels[1][i] >= tol && pixels[2][i] >= tol) { white++; right = (x > right && white == 1) ? x : right; }
            else { left = (x < left && white >= 1) ? x : left; right = (x == w - 1 && white == 0) ? w - 1 : right; white = 0; }
            if (white == w) { top = (y - top < 3) ? y : top; bottom = (prev_color && x == w - 1 && y > top + 1) ? y : bottom; }
            left = (x == 0 && white == 0) ? 0 : left; bottom = (y == h && x == w - 1 && white != w && prev_color) ? h + 1 : bottom;
            if (x == w - 1) { prev_color = (white < w) ? true : false; white = 0; }
        }
        right = (right == 0) ? w : right; left = (left == w) ? 0 : left;

        //Crop the image
        if (bottom - top > 0)
        {
            Bitmap bmpCrop = bmp.Clone(new Rectangle(left, top, right - left + 1, bottom - top), bmp.PixelFormat);

            return (Bitmap)(bmpCrop);
        }
        else
        {
            return bmp;
        }
    }


}
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8057380

复制
相关文章
selenium多个窗口切换
浏览器里面支持多窗口打开,例如这样: html里面写了: target="_blank" 造成新打开一个窗口,但是selenium不会自动跳转到新的串口,需要自己切换: # 你打开的浏览器,谷歌
机器学习和大数据挖掘
2019/07/02
2.3K0
WPF 在 Alt+Tab 隐藏窗口
最近在开发一个 Toast 窗口,因为这个窗口不能在显示之后关闭,因为可能用户会不停让窗口显示,所以只能 Hide 。但是这样会在 切换窗口看到这个窗口,所以我找到了一个方法来让 WPF 窗口不在切换窗口显示。
林德熙
2018/09/18
3.2K1
软件测试|selenium窗口切换
问题:浏览器可能自动切换到了新页面,但是<font color='red'>selenium的driver还停留在旧页面,导致无法操作新页面</font>
霍格沃兹测试开发Muller老师
2022/12/28
1.2K0
python+selenium+Chrome(headless) 实现自动赠送虎牙礼物
前几日,在虎牙关注了个主播,领了一个一级狗牌。 然后发现虎牙会每天给粉丝送10个虎粮的免费礼物,不用就过期了。 赠送礼物会增加亲密度,给狗牌升级。 而7天没有亲密度增长的话,亲密度还会掉。 我就在想,不如写一个脚本,每天自动赠送免费礼物给关注的主播。 不用自己管,亲密度也往上涨不是美滋滋
wo.
2021/06/15
3.9K3
Selenium 系列篇(三):窗口篇
Selenium 自动化过程中,对窗口本身的操作包含:打开一个窗口、关闭一个窗口、刷新一个窗口、窗口的回退和前进。
AirPython
2020/09/22
2.6K0
Selenium 系列篇(三):窗口篇
Selenium WebDriver API 学习笔记(三):浏览器控制
读了虫师《Selenium 2自动化测试实战 基于Python语言》一书,感触颇深,内容非常丰富。现整理下来,供后续学习参考使用。本次主要整理的是元素浏览器控制之二。内容在“Selenium WebDriver API 学习笔记(二):浏览器控制”基础上添加。
虫无涯
2023/01/17
8630
Selenium获取当前窗口句柄与切换回原窗口句柄
Selenium通过window_handles获取当前窗口句柄,进行页面元素操作
流柯
2018/08/31
3.2K0
Selenium 窗口操作与上传下载
打开我要自学网Selenium课程主页,然后打开2-1课程详情页面,再回到课程主页打开3-1课程详情页面
清风穆云
2021/08/09
6940
Selenium对当前浏览器窗口截图
在自动化测试中,截图可以帮助我们直观的定位错误、记录测试步骤。 同样,我们可以通过截取关键信息的图片,用以保留测试证迹。WebDriver提供了几种截图函数来截取当前窗口:
Altumn
2019/10/21
2K0
Selenium对当前浏览器窗口截图
Selenium切换窗口driver.switchTo().window(handle)
当测试页面同时出现2个或者以上窗口时候,而且新打开的window没有namem,可以使用driver.switchTo().window(handle)来进行切换,直接上代码:
软测小生
2019/07/05
2.3K0
Java程序优化之替换swtich
关键字switch语句用于多条件判断,功能类似于if-else语句,两者性能也差不多,不能说switch会降低系统性能。在绝大部门情况下,switch语句还是有性能提升空间的。 但是在项目代码中,如果
纪莫
2018/04/19
1.4K0
浏览器标签tab窗口切换时事件状态侦听
项目中使用到了websocket,用户在浏览器窗口切换或者浏览器最下话后,websocket的状态有可能断开,且没有重试机制,所以想通过用户回到当前页面的时候,系统能够自动刷新,重新连接socket
joshua317
2021/08/31
2.5K0
Selenium+TestNG实战-7 多个tab之间driver的切换
本篇接着前面内容,主要学习driver如何在同一个浏览器的两个不同tab进行切换,然后如何判断我们创建的文章就是我们新建的。
凯哥Java
2019/06/30
1.9K0
Python+selenium 自动化-通过窗口名切换窗口,如何获取当前窗口的title窗口名
通过窗口名切换窗口 driver.title 可以获取当前窗口名,把所有的窗口遍历一遍,当窗口名和要切换的吻合就停止,都没有切换到最右边的窗口。
小蓝枣
2020/09/23
3.4K0
未来创新的人工智能测试自动化工具:第三次浪潮
当我回顾我在测试自动化领域的职业生涯时,有三个不同的时期,或者说“波浪”会浮现在我的脑海中。
顾翔
2020/05/20
1.4K0
未来创新的人工智能测试自动化工具:第三次浪潮
JUnit中用于Selenium测试的中实践
自动化测试通过允许他们自动化重复性的任务来帮助简化软件测试人员的生活,而开源测试自动化框架(如Selenium)使用户能够大规模自动化Web测试体验。但是,如果您无法验证测试用例是否通过,则自动化测试有什么用?
FunTester
2019/11/10
2.1K0
iTerm2 创建的Tab页都是新窗口的问题
最近重新创了一台M1的 MacBookPro,在安装软件后,发现iTerm2用起来有些问题,我希望创建出tab的时候始终创建的是一个新的窗口,以为是有什么兼容性问题。
前Thoughtworks-杨焱
2023/02/09
1.9K1
iTerm2 创建的Tab页都是新窗口的问题
Flink监控检查点
Flink的 Web 页面中提供了一些页面标签,用于监控作业的检查点。这些监控统计信息即使在作业终止后也可以看到。Checkpoints 监控页面共有四个不同的 Tab 页签:Overview、History、Summary 和 Configuration,它们分别从不同角度进行了监控,每个页面都包含了与 Checkpoint 相关的指标。
smartsi
2020/12/15
1.6K0
Flink监控检查点
Power BI窗口函数应用于图表设计
Power BI于2022年12月推出的窗口函数极大简化了使用SVG矢量图自定义图表的过程。OFFSET、INDEX和WINDOW函数对设计连续型图表有重大意义。(不了解窗口函数参考采总此文:Power BI本月正式推出的DAX新函数:OFFSET、INDEX、WINDOW)
wujunmin
2023/02/28
1.9K0
Power BI窗口函数应用于图表设计
kylinTOP 测试与监控平台的 WEB UI 界面自动化测试与 selenium 比较
kylinTOP测试与监控平台的WEB UI自动化测试没有使用selenium技术来实现定位,完成是自研技术,由于有多年自动化项目实践经验,以前使用selenium做自动化测试存在自动化测试不稳定以及脚本维护难、自动化测试成本高的痛点,因此自研了自己的自动化测试平台。
jackey422
2019/11/29
1.3K0

相似问题

ggplot2两种不同美学的独特传说

12

文本和点几何的ggplot2尺寸美学

12

用ggplot2绘制的瓷砖--同一瓷砖中的两种美学导致图形故障

12

ggplot2 -轴美学

13

修改美学- ggplot2

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档