图片的需求

需要图片的业务

  • 某个业务的图片,比如汽车logo。
  • 页面元素图片,比如切图/icon。
  • 广告图片。
  • banner。
  • 手动上传的一些分享图片。

存储路径和命名。

  • 不能反推出原图路径,防抓。
  • 不能反推出同类型其它图片,uuid不用连续数字id。
  • 尺寸信息。
  • 缩略标准信息。
  • 根据图片id能计算出存储路径和命名。
  • 业务线/模块。适用于切图。
  • 推导出其它尺寸文件名。根据1个命名就可以反推出其它尺寸的图片名。
  • 类型当作路径。
    • 头像。avatar。

命名。

版本1~16 userId二进制的后8位 时间微妙0~999 随机数0~256 + uuid:md5(key+长+宽) + 长 + 宽 + 后缀 存储的云 原图后缀1~16

版本0000,userId后几位00000000,时间微秒0000000000,随机数00000000,原图后缀0000,md5(key + 前面部分 + 长 + 宽)

例:0001100000011000000001100000011001

大厂的图片地址

格式的需求

  • 图标。客户端内图片,需要图片是清晰的,格式用无损和不用压缩。
  • 手机照片的格式。jpeg,HEIC(iphone)。
  • base64图片。

格式。

  • 矢量图片。体积小。渲染时间长。适合小图片。
  • webp。支持透明度,压缩比比JPEG高,显示效果不输于JPEG,官方评测quality75均衡最佳。Android从4。0起支持。Android 4。2。1+支持透明度。
  • png。压缩工具:pngcrush,pngquant,zopflipng。
    • pngcrush在PNG过滤器和zlib(Deflate)参数上迭代,使用过滤器和参数的每个组合来压缩图像。然后选择产生最小压缩输出的配置。
  • jpg。压缩工具guetzli,packJPG。


    image.png

存储和性能。

  • CDN。
  • 浏览器缓存。header头。
  • 客户端缓存。已有大图时不下载小图,直接用大图。已有小图,要加载大图时,加载前用小图占位。
  • 低频存储。低频使用的冷数据存储。
  • 压缩。图片大小限制。客户端压缩。
  • 格式转换。
  • 渐进显示。
  • 多域名。用于浏览器并发请求。
  • 开发/测试/预发布环境的图片。

安全

  • 上传次数限制。
  • 防盗链。防止别的网站内使用自己的图片。
    • 黑名单。
    • 白名单。
    • referer。是否允许referer为空。
    • 动态签名,可以设置签名的有效时间。阿里云支持,需要bucket是私有读。
  • 鉴黄。

图片美化和编辑。

  • 一键美化。
  • 锐度。
  • 亮度。
  • 对比度。
  • 模糊。
  • 马赛克。
  • 贴纸。
  • 裁剪。
  • 内切圆裁剪。
  • 圆角矩形裁剪。
  • 水印

客户端功能。

  • SDK。
  • 选图片。
  • 裁剪。
  • 上传。
  • 贴纸。

web端功能。

  • 上传。批量上传。

服务端功能。

  • 临时密钥,用于上传。
  • 删除图片。

兼容不同的云服务。

  • 随机云服务。
  • 指定云服务。
  • 多个云服务。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容