在line = line.replaceAll("(\\d{4},)", ",\1");
中找到空(白色)空间的fastest & most efficient way
是什么? (无需说使用System.Drawing.Image
和LockBits
...)
我的任务是通过不掩盖现有内容来找到unsafe
的位置...
在我的情况下,现有图像是pdf文档中的渲染图像。
我的目标是将另一张图片放在有足够空间的最低位置: (以下示例中的绿色)
扫描每个像素并找到合适的位置是否是一个很好的决定?
或者有更有效的方法吗?也许使用网格并寻找一个汇总值来评估小区域?
也许有人知道现有的&快速算法还是可以提供示例代码?
非常感谢!
答案 0 :(得分:0)
我认为你可以通过尝试用很少的像素测试消除大面积来避免扫描大多数像素。
让图片的宽度为 WIDTH 。 让图片的高度为 HEIGHT 。
您可以使用 HEIGHT / 2 + 1 像素将尺寸 WIDTH / 2 + 1 的图块平铺文档。
只要可以放置图片,它就会完全覆盖其中一个图块。
因此我的算法是这样的:
创建一个布尔的二维数组(或类似的数据结构)作为它完全在其中的每个图块的标记。
遍历所有瓷砖。
png
在隔行扫描模式下使用。通过这种方式,你很有可能找到一个非白色像素,其测试远远低于瓷砖的所有像素。