Skip to main content

需求分析

需求分许

随着H5的普及和现在大家普遍电脑配置的提高,前端能做的事情越来越多,前后端的边界也越来越模糊,很多业务能放在前端,也能放在后端。在项目需求设计时我们经常会从不同的角度,流量、安全、性能、用户体验、等多个方面来决定业务是放在前端实现还是后端,甚至是云端取实现。

需求: 图片变形拉伸(2D)

这里的变形拉伸其实涉及了两个需求,一个是实实在在的图片拉伸变形,一个是将变形后图片与背景合成

变形拉伸

拉伸变形是一套具体的矩阵算法,当时收集了非常多的资料:

图片合成

虽然图片合成做在后端会增加服务器的流量和性能消耗,但是因为使用过pillow实现过类似的业务,稍改以前的模块就能马上用到这个项目中,所以毫不犹豫的现将合成做到后端,打算日后有时间再用前端的canvas生成。

需求2 png图片压缩

目前市场上公认的几套png压缩方案:

  • tinyPNG:之前项目用过,必须采用收费方案才符合本次项目要求
  • PIL:实测压缩率太低,而且损失页比较高
  • OPENCV2:比PIL稍微好一点,但是压缩率还是不高
  • quantPNG:压缩率逼近tinyPNG,而且开源可控

毕竟是个人项目,之前已经用过tinyPNG,所以这次特意选用quantPNG,毕竟有tinyPNG兜底,多长是一套方案以后多一个选择。