PSpriter之RectanglePacking--矩形布局 进入全屏
line

在Css Sprites中进行图片合并,需要考虑到图片如何布局的问题,而且得考虑:

如果是混合模式进行图片合并,那么该如何布局,才能保证合并后的大图面积最小(能合并成100KB的,绝对比合并成120KB的好!)。

这也还不够,还需要考虑的是:布局的算法,如何才能性能更佳?也就是矩形布局所需要消耗的时间。


查了好多资料,也看了老外的布局算法,有rectangle packing,有bin packing,但还是满足不了自己对性能的要求。

所以,干脆自己写一个吧!

简介:

/**
* 矩形布局算法,支持三种模式布局
*  1、verticla:垂直方向布局
*  2、horizontal:水平方向布局
*  3、mixed:混合布局
*        
* @example
*     // 导入类库
*     include_once('PSpriter/RectanglePacking.class.php');
*     // 需要进行布局的矩阵列
*     $rectangles = array(
*               array( 'width'=>100, 'height'=>30 ),
*               array( 'width'=>50, 'height'=>40 ),
*               array( 'width'=>110, 'height'=>45 ),
*          );
*     // 布局所需配置
*     $options = array(
*               'margin' => 5,
*               'packing' => 'mixed'
*          );
*     // 创建布局实例
*     $packing_instance = new RectanglePacking();
*     // 布局
*     $result = $packing_instance->run($rectangles,$options);
*        
*     // 要看返回结果的格式,请查看run方法的注释
*      $result = array(
*                'canvas' => array(
*                     'width' => 100,      // 画布宽度
*                     'height' => 100      // 画布高度
*                 ),
*                'rectangles' => array(
*                     array(
*                          'width'=>10,      // 矩形的原始宽度
*                          'height'=>10,     // 矩形的原始高度
*                          'x'=>1,           // 矩形在画布中的x坐标
*                          'y'=>1            // 矩形在画布中的y坐标
*                     )
*                )
*      );          
* @author zhaoxianlie
*
*/


原理其实不复杂,分三种情况进行布局。

有关PSpriter的源码,在后续文章开放!

这里只是看看大概的使用方法。

阿里巴巴-钉钉-开放平台,能力开放&开发者运营岗位招聘中, 期待你的加入!
钉钉开放,让应用开发更简单
充分开放,是钉钉的重要方向!除致力于为开发者打造丰富的开放API, 更易接入的场景化能力包, 完备的应用开发工具之外, 还需要持续构建开放能力的布道、开发者生态运营体系,包括培训、沙龙、大会、社区合作等等。业务在快速发展,我们也还需要更多优秀的小伙伴加入!

评论区域

line