创建相册;需要一种算法来动态放置不同大小的图像

Posted

技术标签:

【中文标题】创建相册;需要一种算法来动态放置不同大小的图像【英文标题】:Creating a photo album; Need an algorithm for dynamically placing varied-size images 【发布时间】:2009-11-24 16:01:56 【问题描述】:

好的,所以在我的小相册应用程序中(在 Flash/AS3 中,但语言无关紧要),每个页面都有一个 5x4 的照片网格。但是,我想提升一些照片的显着性,因此其中一些会占用 2x2 的空间,而不是占用 1x1 的空间。

所以,如果我有一个图像对象数组,我正在迭代,以便按顺序填充页面...跟踪 a) 页面何时填充和 b) 是否为 2x2 的最佳方法是什么?照片将适合网格上的给定点吗?

例如,在这种情况下,前四张照片(用 x 标记)已被放置。第五张照片是 2x2……它显然不适合第一行,5 列。位置...确定需要将其放置在下一行以及第 1x5 位置是否为下一张 1x1 照片打开的好算法是什么?

XXXO 哦哦哦 哦哦哦 哦哦哦

【问题讨论】:

【参考方案1】:

如果可能的话,首先放置大图像可能会更容易,因为这样您就可以用小图像填充所有剩余空间。

因此,如果您要从列表中拉出这些图片,请继续往前跳,直到找到一张大的(或两三张,随心所欲),然后放置它们。然后,跳回到你开始的地方并填充未使用的图像(显然跳过大的图像)。要跟踪它是否已全部填满,您可以保留一个计数器,小图像计数为 1,大图像计数为 4,直到达到 20。

【讨论】:

这会更容易,但我想在每个网格上混合大小图像...计数器是解决方案的一部分,但我应该使用什么数据结构/设计来计算网格中的空间位置会/不会容纳大图像吗? 我知道你想要一个混合,我的意思是你应该在每次显示网格时运行该例程。因此,如果您采用空白网格,然后放置两张大图像,您不必担心确定它们是否有空间,您知道它们有。因此,此时您可以简单地用 1x1 图像填充它。为了弄清楚大的放在哪里,你实际上可以想出一些预先确定的安排(比如 1,1 和 4,4 是大的左上角),因为真的不是很多可能性。

以上是关于创建相册;需要一种算法来动态放置不同大小的图像的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式创建 PDF 相册

MATLAB竟也能制作3D相册?教你用MATLAB制作立体动态相册

MATLAB竟也能制作3D相册?教你用MATLAB制作立体动态相册

目标检测算法盘点

如何为不同的电子邮件提供商在图像上放置动态文本? (响应式电子邮件)

调整uiimage中的图像大小并将其以新大小保存到相册