记一个七牛云生成图片水印的问题

  |   0 评论   |   1,339 浏览

1.首先七牛云生成图片是没问题的

2.但诡异的是当图片上水印的文字很长的时候,就会涉及到换行问题。换行呢。有主动换行和被动换行。

  • 主动换行:是我们自主把文字按照一定长度切换成两组文字然后赋值到图片上。
  • 被动换行:就是今天我们遇到的问题,图片加水印然后线上环境app端图片都不显示了。但看后台数据图片是有内容的。在pc端也是能看到的。
    图我就不截了。
    用户看到的现象是:图片打不开了
    程序员看到的现象是: 图片地址已经存入到数据库,但是图片地址有问题,存入到数据库的时候看到库里地址有换行符。
    那作为程序员就开始分析为啥会有这个现象了。
    1.通过日志找到入库sql,发现入库的时候就有问题。
    2.既然入库的时候就有问题,那看这个字段是啥时候生成的。从前端过来的时候是否有问题,
    经查找日志,发现从前端过来的时候,没问题,
    那就是这个字段被加水印的时候弄坏的,多了空格。加水印是依照七牛的方式base64对图片文字加密。
    这里就有问题了,base64加密字符会换行,经查证
    据RFC 822规定,每76个字符,还需要加上一个回车换行
    就是因为这个回车换行导致的。问题就找到了。

解决方式:

  • 换用Apache的 commons-codec.jar, Base64.encodeBase64String(byte[])得到的编码字符串是不带换行符的
  •  Base64.encodeBase64String("123".getBytes())..replaceAll("[\s*\t\n\r]", "");

标题:记一个七牛云生成图片水印的问题
作者:jackssybin
地址:https://jackssybin.cn/articles/2019/09/21/1569054780956.html

评论

发表评论


取消