需求分析
需求分许
随着H5的普及和现在大家普遍电脑配置的提高,前端能做的事情越来越多,前后端的边界也越来越模糊,很多业务能放在前端,也能放在后端。在项目需求设计时我们经常会从不同的角度,流量、安全、性能、用户体验、等多个方面来决定业务是放在前端实现还是后端,甚至是云端取实现。
需求: 图片变形拉伸(2D)
这里的变形拉伸其实涉及了两个需求,一个是实实在在的图片拉伸变形,一个是将变形后图片与背景合成。
变形拉伸
拉伸变形是一套具体的矩阵算法,当时收集了非常多的资料:
图片合成
虽然图片合成做在后端会增加服务器的流量和性能消耗,但是因为使用过pillow
实现过类似的业务,稍改以前的模块就能马上用到这个项目中,所以毫不犹豫的现将合成做到后端,打算日后有时间再用前端的canvas生成。
需求2 png图片压缩
目前市场上公认的几套png压缩方案:
- tinyPNG:之前项目用过,必须采用收费方案才符合本次项目要求
- PIL:实测压缩率太低,而且损失页比较高
- OPENCV2:比PIL稍微好一点,但是压缩率还是不高
- quantPNG:压缩率逼近tinyPNG,而且开源可控
毕竟是个人项目,之前已经用过tinyPNG,所以这次特意选用quantPNG,毕竟有tinyPNG兜底,多长是一套方案以后多一个选择。