萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 2499|回复: 25

php自动生成网页相册缩率图

[复制链接]
头像被屏蔽

TA的专栏

发表于 2007-3-24 22:54 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-3-25 10:09 | 显示全部楼层
我说说我的想法,没有实践,只是构思了一下,所以不知道是否可行。

先说条件固定宽度W,我觉得这个问题不难解决,因为要求中只说了保证长宽比不变,所以只要将图片拼接成矩形,再对所有图片进行缩放就可以满足任意要求的宽度了。

现在问题就变成了如何将图片拼接成矩形。我觉得这个问题其实是多解的,任意多张图片通过缩放都可以拼成一个矩形。现在问题是为了让图片美观我们要做一下分类,根据长宽比把瘦高类图片分为一组(本例中的那颗树),把矮胖类图片分为一组(本例中的其他5张图片),然后尽量将瘦高类的图片横排,矮胖类的图片竖排,将他们同组的排列成矩形,这样分组的目的是让同一类图片尽力合理的占用空间。
剩下的问题是如何进行两组之间的组合,我觉得虽然题目中没有要求,但是这里出于美观考虑,应该设定一个规定参数,比如每行两张图片。如果没有规定可能会出现1张瘦高在上5张矮胖在下的情况,显然不够美观。瘦高类图片由于是横排,所以每张都占一个位置,矮胖类图片不管有多少,由于是竖排,所以在宽度上面只占一个位置。本例中瘦高类只有一颗树,所以正好满足每行两个的要求,也就出现了瘦高类和矮胖类横排的结果,如果瘦高类图片很多,比如有10张,可以根据规定参数(比如每行2个),进行切分,多出来的再自行分组对齐(矮胖瘦高的分组缩放规则不变),换行显示。同样在高度方面也应该有一个固定的参数,比如规定每列最多竖排3个图片,如果没有规定那本例来说,可能会出现5张图片横排在左,右边一颗大树。有了规定,多余的图片将自行分组对齐(矮胖瘦高规则不变),如本例3个一组排在大树左边,多于的应该和多于的竖高类图片再进行左右组合,但由于没有竖高类图片了,所以竖排在下,但是由于每行2个图片的规定,这次破例再对他们进行横排对齐。

总的来说将图片缩放成固定宽度以及将图片排列成矩形并不困难,问题是如何尽力美观的将他们排列起来,何所谓美观?就是尽量让图片间的占空间比例相等,而分组和固定参数是解决这个问题的方法。这里举两个极端的例子,假如图片是4个正方形,2x2排列无论如何缩放,在宽度和高度上都是相等的所以它是最完美的。另一个例子,一个横条和一个竖条排列,无论如何排列,占空间比例都不可能做到很好的均匀分配,所以最后必定是一个图片放大的都失真了,另外一个却缩小的看不见人了。

至于两个固定参数的选择我觉得和图片的比例分配有关系,应该也可以通过算法让计算机自己推断,这个现在还没想好,但是感觉如果不出现特别极端的情况,一般人工设定两个数值,比如本例的2和3,应该就可以解决日常问题了。

再有说一句题外话,假如既规定了最后的宽度又规定了高度,问题可就难解决多了,以前好像看到过类似的问题。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
头像被屏蔽

TA的专栏

 楼主| 发表于 2007-3-25 15:47 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-3-25 17:38 | 显示全部楼层
:D $支持$
还是楼上分析的专业,不知道算法里是否有个专门的领域研究排版的,估计报社什么的应该常用这些东西。另外小声问一句,楼主是学那门课遇到这个问题的?我在德国还没开始上专业课呢,不过也快了,不知道以后学习中是否也会碰到这些问题,德国大学好像专门有个算法课吧,是master的还是bachelor的?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
头像被屏蔽

TA的专栏

 楼主| 发表于 2007-3-25 18:54 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
头像被屏蔽

TA的专栏

 楼主| 发表于 2007-3-25 19:56 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-3-25 23:17 | 显示全部楼层
楼主题目正确么??
你的答案是两张图片只能横排,
举个例子,比如k=2
w=10
两张图片都是长宽比都是7:2的话(length=7,width=2),
那么横排也排不开两张呀??????!
因为w=10
而7+7=14>10
怎么可能横排呀????
俺还是没明白!$郁闷$
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
头像被屏蔽

TA的专栏

 楼主| 发表于 2007-3-26 00:10 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
头像被屏蔽

TA的专栏

 楼主| 发表于 2007-3-26 01:32 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-3-26 07:37 | 显示全部楼层
原帖由 漂去漂来 于 2007-3-26 01:10 发表
W单位是pixel

另外,我写的也不是答案,只是我思考的一些结果。我也不知道答案是什么。


如果你设置w=500
4个横排的,
3个竖排的,
4个横排的你先选前4个图片,
3个竖排的你先选前3个图片,
然后你看结果.
如果
4个横排列的你选从第二个开始选4个,
3个竖排列的你选从第二个开始选3个,
你在看结果.
就这样一直到最后,
你看看什么乱七八糟的排列都能出来.

;) ;)

[ 本帖最后由 jeanie 于 2007-3-26 08:56 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-2-12 05:12 , Processed in 0.071198 second(s), 21 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表