Duke Yin
Duke Yin
2015年5月5日

外出旅行的时候发现我做的微博站“时光捕手(Keep Minutes)”有一个较为致命的缺陷,那就是在移动设备使用2G 3G 4G网络发布图片较为困难。如今iPhone拍出来的照片一张大概2MB-3MB大小,在室外没有Wifi的环境 上传一张照片无疑是压力山大,耗费金贵的流量费不说,速度还巨慢。

五一三天假期,思考解决这个问题的三种方案。

  1. 通过第三方网站的APP上传图片,并通过类似IFTTT的互联网服务同步到“时光捕手”:例如Tumblr 新浪微博的手机APP都能先将图片在本地缩小尺寸,再上传,可以节省流量节约时间。
  2. 通过照片处理App缩小照片尺寸,保存到本地,再进行上传发布。
  3. 整合到上传图片的流程,通过手机自带的浏览器本地压缩照片再上传。

第一种方案的缺点是图片都是上传到第三方网站,在时光捕手上得到的都是外链图片,有的网站还对站外引用有限制,虽然解决了图片大小和速度问题,但是同步花费的时间也不短,没有即时性,也失去了“时光捕手”的意义。

WordPress官方iPhone客户端倒是可以本地压缩限制上传图片的尺寸,但是经测试,在移动环境下经常失败(是站点配置问题还是客户端问题不得而知),而且编撰方式并不适合于发布微博,所以也不在考虑范畴。

第二种方案在手机端操作较为繁复,切换的App较多,导致发一张照片浪费的时间比上传还多,而且难以找到单修改照片尺寸的App,也弃之。

第三种方案涉及编写代码,比起前面两种对于我这个非计算机专业的人来说实现起来有一定困难度,但是一旦实现,试想其结果是最完美的,在不改变之前使用习惯的前提下照片自动在本地优化过并完成上传发布,并且不依赖任何外部网站。

经过一番搜索,在Github上有个叫 localResizeIMG3 的似乎可以做到,调用js再修改html直接可以达到目的。但是整合到Wordpress上传界面有点难度。

不甘心,在Wordpress搜插件,竟然找到一个叫  Resize images before upload 正合朕意。

经过测试,这个插件将所有代码整合到一个php文件里,并且可以在后台设定图片的压缩目标和压缩质量,唯一稍有不足是只能通过Wordpress上传媒体界面压缩图片,而且只支持较新浏览器,所幸,iPhone的Safari是被支持的。

在移动版“时光捕手”中简单的用wp_editor()加入一个完整文本编辑框,带上传媒体按钮直接呼出Wordpress上传界面,原先上传照片2-3MB的照片需要1分多钟,还经常失败,现在由于图片被浏览器压缩到了设定的尺寸,4G网络上传下用时约3、4秒,真正上传的数据大概也就60kb左右。

至此,图片在移动设备上上传过慢的问题得以解决。

@科技

本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可.