gpt4 book ai didi

c# - 如何快速定位图片中的空白(例如白色)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:42 27 4
gpt4 key购买 nike

System.Drawing.Image 中定位空(白)空间的最快最有效的方法是什么? (不用说要用LockBitsunsafe...)

我的任务是在不覆盖现有内容的情况下找到将矩形图像放入现有图像的位置...
在我的例子中,现有图像是 pdf 文档的渲染图像。

我的目标是在有足够空间的最底部位置放置另一张图片:(以下示例中的绿色) Text as Image with white space

  • 扫描每个像素并找到正确的位置是否是一个好的决定?

  • 或者有没有更有效的方法?也许使用网格并寻找汇总值来评估小区域?

也许有人知道现有的快速算法或者可以提供示例代码?
非常感谢!

最佳答案

我认为您可以通过尝试用少量像素测试消除大面积区域来避免扫描大多数像素。

设图片的宽度为WIDTH。让图片的高度为HEIGHT

您可以将文档平铺成大小为 WIDTH/2+1 x HEIGHT/2+1 像素的平铺。

无论将图片放置在何处,它都会完全覆盖这些图 block 中的一个。

因此我的算法应该是这样的:

  1. 创建 bool 值的二维数组(或类似数据结构)作为其完全位于其中的每个图 block 的标记。

  2. 遍历所有图 block 。

  3. 对于每个图 block 检查像素,直到您击中非白色像素(将图 block 标记为非白色)或扫描所有像素(将图 block 标记为白色)。要扫描图 block 的像素,我会使用交错模式,例如 png 在交错模式下使用的模式。通过这种方式,您很可能会幸运地找到一个非白色像素,其测试远少于图 block 的所有像素。
  4. 检查每个白色图 block (从左下角到右上角)是否可以扩展到图片的大小。 (再次使用交错模式以尽量减少比较次数)

关于c# - 如何快速定位图片中的空白(例如白色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41803973/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com