事情还得从几天前心血来潮准备水一篇文章说起。
我喜欢使用win10的屏幕截图,然后直接用 + 的方式粘贴到WP-Editor.MD里,编辑器就自动获取剪贴板的图片并上传。
根据百度的指引,很快就找到剪贴板图片上传的相关代码 然后,找到了这段代码,判断不是png就返回error
接下来的问题就很简单了,我想要剪贴板上传jpeg,只需要在判断内容里加 就完事了。
但是,个人觉得这种靠客户端post上来的头就判断文件确实很不妥,很容易被伪造上传,于是引入了通过幻数对传入二进制检测的composer依赖php-mime-detector
因为php-mime-detector只能通过直接传入文件的绝对地址检测,而我们post直接上传的是二进制流,所以对Mine的类进行了方法重写
(拼音英语混合,专治低血压哈哈哈)
剩下的就是把原来Editor.md 默认的png转jpg压50质量的代码给突突了 换成webp 1.6M的png,webp设置原图90%质量可以压到几百k,而且webp现在几乎所有的现代浏览器均支持了,效果还好,为什么还要用糊糊的jpg呢
这部分的代码是直接白嫖别人的,在此表示感谢 给WP Editor.md编辑器添加粘贴图片自动上传到媒体库功能 我把原作者的代码分离出来,写成函数,方便调用
看到Editor.md对post的图片是把二进制转base64再上传,对于几M的png确实很不友好,本来想弄个前端压缩一下再上传,找了一个pako.js进行压缩,遗憾的是前端压缩过图片反而更大了,我也不知道这是神马情况
压缩前:275213
