Chindle文字自动排版设计





设计目标:

根据给定的轮廓扩展函数生成中文图片。


设计思路:

从内向外逐步穷举,最坏情况下:逐个点进行测试。


基本算法:

main:

while not finish:

    point = gen_point();

     if ( ok = test(point))

          add(point)


gen_point:

   expand searching area base on last point



注意事项:

1. 文字排版

 > 理论上文字排版应该支持所有的角度:横排,竖排,斜着排,等等,它通过矩形旋转角度angle来描述,目前只支持横排和竖排,为了便于计算,Chindle中每一个单词都用一个矩形来描述,系统记录矩形的A, C两点,以及矩形旋转角度(angle),通过A, C点可以计算出中心点(Center)、矩形宽(Width)、高(Height)。中心点在计算中比较好用。

2. 轮廓描述方法

 > 最简单的轮廓是矩形、圆形等可以用方程描述的形状。对于自定义轮廓,可以采用枚举的方式定义区域。为了兼容所有轮廓,采用枚举方式定义区域。在枚举方式中,用户给定一个位图mask,在后继的计算中,与位图对比即可。如果溢出位图,则表示此位置不可放置文字。

3. 文字扩散方法

> 定义一个扩散函数,给几个最简单的扩散函数:螺旋函数、阻尼震动函数。

4. 版面大小

> 印刷要求80pixel/90pixel每英寸,一英寸约合2.5cm。对于一个50cm的图形,需要 90 pixel/inch * 1inch/2.5cm * 50cm = 90 * 50 / 2.5 pixel = 1800pixel

如果直接由php来生成这个像素级别,可能需要大量计算,这里采用的方法是客户端只生成小图片(450p * 450p),大图片在后端离线生成。大图片与小图片呈等比缩放关系。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值