JinYazhou +

【原创】解决dtcms上传图片被压缩问题

前言

下班后无聊,开始翻开硬盘里的代码。(为什么没有翻毛片?因为为了给装win10空出来位置,挥泪告别了毛片)
翻到了dtcms,很好的.net项目,功能暂且不谈,后台界面狂甩织梦几条街。运行解决方案后,准备研究下他的插件实现原理。

发现Bug

在预览网站的时候,发现所有上传的图片全都虚掉了(行业待的时间长了,眼睛都好使了)。然后F12调出开发人员工具,开始抓包分析。上传原图片大小:110385字节,如下图:



上传到服务器后128313字节,竟然比原图片还大。把上传后的图片保存下来发现,图片实际大小只有86568字节。

找出BUG出现原因

我把目光投到了后台代码\DTcms.Web.UI\UpLoad.cs,检查了一遍,图片最大尺寸无限制,与原图分辨率一致。不是后台代码的问题。
随后,对抓包的第二个请求做分析,为什么会出现data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=,查了半天资料也没搞懂是不是跟图片被压缩有关。

然后用鼠标把initiator拖开,看到数据请求经过了\DTcms.Web\scripts\webuploader\webuploader.min.js上传组件。拖到EditPlus里打开,查找关键字quality,全部改成100,更新浏览器缓存,再次上传,问题依旧。

解决Bug

随后搜索web uploader,找到了项目地址,百度团队开发的上传组件。查看API,compress设置为false,问题解决。


结束语

dtcms没有问题,所谓的"bug"出现在百度上传组件上。有些感慨, 以前不喜欢用组件,ajax请求也要自己写,理由是不需要全部的功能,却要多加载全部大小的文件,心理洁癖。现在想想,之前这么想最主要的原因还是上学时候有大量的时间,闲。有时候不必重复造轮子,用最好的资源做最好的事情,达到最好的目的,给自己最好的安慰,足够了。


发现问题、解决问题后很有成就感,因为收获。终于可以睡个好觉了。:-)

最新评论