PicGo一个用于快速上传图片并获取图片 URL 链接的工具。

今年是 PicGo 的五周年,虽然我真的很想推出一个大的正式版 (2.4.0) ,但是平时工作实在忙碌,只能抽空在闲暇时间写写 PicGo,因此没能交出一个让自己满意的答卷。所以本次时隔一年的更新只能以一个小版本更新。

不过对于用户来说,这个小版本还是修复了不少问题以及带来了不少新功能,我挑了其中一些比较有代表性的,快来看看吧。

Features

macOS arm64 的构建版本

从 2.3.1 版本开始,PicGo 也为 arm64 版本的 mac 带来适配的构建版本。为此,PicGo 更新了底层的 Electron 版本,跨越非常大,没少做适配。不过 arm64 版本的原生应用确实速度非常快。

如果你是 macOS 用户,但是遇到了安装、使用的问题,可以参考 PicGo 的 FAQ 最后一条进行处理。

多语言支持

一直以来 PicGo 只有简体中文的界面。从 2.3.1 版本开始,引入了 简体中文 \ 繁體中文 \ English 三种语言的界面。你可以在设置界面中切换语言。如果你想为 PicGo 添加更多的语言支持,欢迎参考贡献指南

i18n 多语言设置

使用内置剪贴板上传

PicGo 对于剪贴板图片一直是采用脚本的方式获取的,同时不同平台的脚本不一样。但是不同的系统、用户环境会带来脚本执行结果不一定符合预期的情况。例如某些 Windows 用户使用「剪贴板上传」的时候就会遇到脚本报错或者进程残留的问题。因此这个版本新增了一个配置项,可以使用 Electron 提供的剪贴板 API 进行剪贴板图片获取以及上传。如果你遇到了上述的问题,不妨开启这个选项。

使用内置剪贴板上传

日志文件大小控制

2.3.0 版本优化了一些启动相关的日志,但是由于代码和系统的原因,某些用户会遇到写入日志死循环的问题,导致日志越来越膨胀,甚至达到了几十GB的级别。

为了解决这个问题,PicGo 首先引入了文件原子写操作,同时对日志文件的大小做了控制。现在你可以在设置界面中,「设置日志文件」-「日志文件大小」里指定 PicGo 的日志文件大小,默认是 10MB,一旦日志写入超过这个大小,将会删掉重建。

设置日志文件大小

命令行上传支持URL

命令行调用 PicGo 客户端上传图片之前是不支持 URL 类型的图片的,2.3.1 版本开始支持。

参考调用方式:

./PicGo.exe upload https://xxx.com/yyy.jpg

SM.MS 图床新增备用上传域名

由于 sm.ms 的原版 api 接口在国内已经被封禁,官方提供了 smms.app 这个替代域名。因此 2.3.1 版本的 PicGo 支持了这个配置,如果你也遇到了 sm.ms 图床上传失败的问题,不妨设置一下备用上传域名这个选项。

sm.ms的备用上传域名

自定义链接格式新增 $extName

此前自定义复制的链接格式里只有 $fileName (用于表示文件名)和 $url (用于表示图片URL),但是文件名中是不带后缀信息的。对于某些用户来说,想要自定义链接格式为相对路径就会出现问题(因为不带后缀信息,可能无法访问到这张图片)。

现在新加了 $extName 后,你可以更方便地设置复制到剪贴板的链接格式了。

PicGo-Server 支持 OPTIONS 请求

这通常在浏览器跨域访问 PicGo-Server 的时候非常有用,否则浏览器会报跨域错误的问题。

Enhancement

macOS 顶部栏图标高清化

之前 PicGo 顶部栏图标一直没适配 macOS 11 及以上的版本,导致图标颜色、清晰度都不符合 macOS 的设计规范。2.3.1 版本更新了图标,现在看上去就好多了。

image
顶部栏图标

配置项自动去除前后空格

此前很多用户反馈他们明明配置没问题,为什么上传老是报错呢?后来帮他们一排查,发现很多都是因为配置项前面或者后面多了空格导致的。如下图,你肉眼能看出哪个配置项多了哪个空格么?

某个可怜的配置项多了空格

于是这个版本哪怕你前后多了空格,在保存的时候也会自动帮你去掉,免去了这个烦恼。

配置代理后上传出错概率更小了

2.3.1 版本一个非常大的底层改动是 PicGo-Core 更新到了 1.5.0 版本,这个版本有一个非常大的改动是底层上传库从 request-promise-native 换成了 axios。为了兼容以前的配置,做了非常多的改造工作。同时我发现换成 axios 之后,使用代理上传出错的情况大大减少。如果你上传图片需要使用代理的话,不妨更新试试。不过 PicGo 目前仅支持 HTTP 代理,所幸大部分代理软件是提供 HTTP 代理的。

Plugins

picgo-plugin-pic-migrater

用于迁移 markdown 文件中的图片到另一个图床的 PicGo 插件

更新版本 1.3.2,修复了之前一个非常严重的问题,会导致用户迁移图片时出现死循环卡住进程的问题。也更新了如下特性:

  1. 支持迁移 markdown 文件中 <img> 标签的图片。
  2. 支持一个新的配置选项,oldContentWriteToNewFile ,那么旧的文件内容将会写入新的文件中,而迁移的结果将会写入旧的文件中。

说句题外话,我本次更新了 PicGo 的文档 以及 PicGo-Core 的文档,都使用了这个插件进行图床迁移(原有的图片在国内的环境下已经无法访问了),自产自销了哈哈。

Bug Fix

这期间也修复了若干Bug,就不一一列举了。感兴趣可以去 release 页面查看。

Others

山东大学镜像站

山大镜像站 从 2.3.0 版本开始镜像了 PicGo。国内用户如果通过 GitHub releases 下载速度慢的话,不妨从 山大镜像站 里下载。

腾讯云 COS

从 2.3.0 版本开始,腾讯云 COS 的同事找到我让我帮忙帮忙推广 COS,作为回报,他们也赞助了 PicGo 的二进制文件分发费用。从这个版本开始,你可以通过腾讯云 COS 提供的链接高速下载 PicGo 了。

下载链接参见 GitHub Releases 更新日志最下方。

未来展望

2.3.0 定下的国际化目标,在 2.3.1 里迈出了第一步,同时也得到了社区小伙伴的支持(支持了繁体中文)。后续文档也会继续更新国际化内容,也希望更多的小伙伴能够参与到 PicGo 的国际化进程中~

其实还有很多工作没有做:

  • 比如我想实现一个 「PicGo 问题自修复工具箱」,让一些常见问题能够在工具箱中修复或者得到解决方案;
  • 同一个图床我希望能够支持多个配置,用户上传的时候可以同时上传图片到多个图床中,可以用于做图片容灾备份;
  • 插件目前执行顺序是随机的,由于顺序是随机的,可能会导致某些的插件之间发生冲突,于是我想实现一个插件可视化排布顺序的功能,让一些插件执行顺序能够手动指定;同时一些插件不一定要阻塞上传流程,可能可以做成并行插件等等;
  • PicGo 的技术栈进行一些更新,比如把 Vue2 升级成 Vue3,Webpack 换成 Vite 等等;
  • vs-picgo 支持安装 PicGo 的插件,这样在 vscode 里使用 PicGo 能够更强大等等;
  • 插件支持自定义 PicGo 的页面,这样插件能够实现更丰富的功能(比如更强大更完善的相册页面?);

这期间也感谢很多朋友给予的支持和鼓励,提问和反馈,正是有你们的支持,我才能坚持更新 PicGo 到今天,也希望 PicGo 能帮助到更多的朋友~