上传图片 #

摘要 #

在 Typora 的新版本中(≥ 0.9.9.32 on macOS or 0.9.84 on Windows / Linux),我们增加了一个 "上传图片 "的功能,通过第三方应用程序或脚本将图片上传到云图像存储。

它的动机是,由于 markdown 文件只是纯文本文件,当你嵌入图片时,markdown 文件并不 "拥有 "那些图片,而只是保留一个对所使用的外部图片文件的弱引用。当你移动或分享 markdown 文件时,那些图像也应该被移动或分享,这就带来了维护成本。但是,如果这些图像是在网上托管的,你就可以自由地移动或分享 markdown 文件,而不需要维护纯文本和它所使用的图像之间的参考。

Typora 现在支持 iPic, uPic, PicGo 等应用程序,能够将你的图片上传到 Imgur (opens new window),Flickr (opens new window),Amazon S3 (opens new window),Github (opens new window), 或其他图片托管服务。

警告! #

在你使用这个功能之前,请注意,Typora 并不拥有那些图片上传程序或云存储服务,它们都是第三方服务,所以 please take care about their license, user agreement, privacy policy, service stability and reliability by yourself

在偏好设置中启用此功能后,Typora 将把使用过的图片路径传递给这些第三方工具,然后他们将把你的图片上传到第三方(或第四方)的云端图片库,Typora 无法控制或保证这个过程,所以请选择一个可靠的服务来确保你的数据安全。

除了隐私和可靠性问题,一些服务可能有一个托管图片的期限,一些服务可能不提供 "删除 "功能,即使你不小心上传了敏感图片,和服务遵循的法律不在你的国家,禁止某种类型的图片或在某些国家的用户,等等。

简而言之,请阅读他们的手册,然后选择上传图片的应用程序和服务。

配置 #

你可以在偏好设置中启用和配置图片上传器。

选择一个选项后,你可能需要下载和安装所需的应用程序,做简单的配置,你想在该应用程序上托管你的图像的云存储,然后点击 "Test Uploader "来测试 Typora 是否可以使用当前的服务和配置上传本地图像。

Validate Image Uploader #

通过点击 "Test Uploader "按钮,Typora 将尝试使用当前配置上传测试图像,你可以在下面的 "Validation "对话框中看到细节、错误信息和上传后的最终 URL 结果。

如果它显示 "验证失败",你需要从原始输出中检查原因。

图片上传者 #

iPic (macOS, Freemium) #

iPic (opens new window) 是一个,它允许你将本地图片上传到各种云服务中,包括 , , 等,并返回给你一个上传图片的网址供公众访问。freemium Imgur (opens new window) Flickr (opens new window) Amazon S3 (opens new window)

下载 (opens new window)

Document (opens new window) 中文文档 (opens new window)

要使用 iPic 作为图片上传服务,你只需要从 MAS (opens new window) 或从他们的网站上安装 iPic 应用程序,然后按照说明配置其图片主机 here (opens new window) 。并在 Typora 的偏好设置中选择 "iPic "作为 "图像上传器",然后你就可以使用 iPic 将图像上传到首选的云图像存储器。

uPic (macOS, OpenSource) #

uPic (opens new window) 是一个原生的、强大的、漂亮的、简单的图片和文件上传工具,适用于 macOS。

你可以通过 Homebrew 安装。

brew cask install upic

或从 github 下载 release (opens new window)

要使用 uPic 作为图片上传服务,你只需要按照上面的说明安装 iPic 应用程序,然后按照说明配置其图片主机 here (opens new window) 。然后在 Typora 的偏好设置中选择 "uPic "作为 "图片上传器",然后你就可以使用 uPic 将图片上传到首选的云端图片存储。

uPic 也有一个详细的英文 Document (opens new window)

Picsee (macOS, Freemium) #

Picsee (opens new window) 是 MacOS 上的一个图像查看器和组织者。

你可以从 Mac App Store (opens new window) 。要配置 Picsee 来上传你的图片,请参考。

Document (opens new window) 中文文档 (opens new window)

PicGo-Core (命令行) (OpenSource) #

PicGo-Core (opens new window) 是一个开源的节点模块,支持图片上传。它也支持插件来扩展其功能。

由于它是一个节点模块,我们提供了两种方法来安装和使用它。

安装 PicGo-Core 的预建二进制文件(Linux / Windows)。 #

Typora 提供了一个预建的 PicGo 二进制文件,使用 nexe 将节点模块打包成一个文件。你可以点击 "下载 "按钮来安装 PicGo 二进制文件,Typora 会开始下载并直接将其放在 Typora 的支持文件夹下。

下载 PicGo-Core 二进制文件的位置

由于 macOS Catalina 的安全规则,预置的二进制文件在 Catalina 上是没有功能的,所以你可以尝试以下选项。

通过节点包管理器安装 PicGo-Core(需要 NodeJS 运行时间)。 #

如果你安装了 node 或 yarn,你可以在终端运行以下命令。

npm install picgo -g

# or

yarn global add picgo

然后你可以在终端输入 "which picgo "来获得它的实际安装位置,然后,选择 "习俗 Command "作为 "Image Uploader "功能,输入"[your node path] [your picgo-core path] upload "作为命令。如果你在系统 PATH 中直接安装了 "node "和 "picgo",你也可以直接填写 "picgo upload "作为自定义命令。

配置 PicGo-Core #

选项 1:编辑配置文件 #

请在以下位置编辑 config.json

  • Linux/ macOS → ~/.picgo/config.json
  • Windows → C:\Users\[your user name]\.picgo\config.json

详情请参考 this document (Chinese Only) (opens new window)

选项 2:通过 CLI 配置 #

如果你通过节点安装了 pico-core,请输入 picgo -h,以显示 picgo 的帮助,并按照其帮助进行配置。

如果你使用了从 Typora 偏好设置上安装的 PicGo-Core 的预制二进制文件,请从文件夹中找到二进制文件(见说明 here (opens new window) ),然后在终端打开该文件夹,通过 ( ./picgo -h) 进行配置。

你可以在以下网址找到它的 CLI 用法 https://github.com/PicGo/PicGo-Core#use-in-cli.

使用插件 #

你可以使用 cli 接口来安装 PicGo-Core 的插件。

PicGo.app (Chinese Language Only) #

PicGo (opens new window) 是一个由 PicGo-Core 构建的 GUI 应用。由于它只提供中文用户界面,因此只有当你的 Typora 使用简体中文语言时,你才能找到这个选项。

要与 Typora 一起使用,我们需要 PicGo ≥ 2.2.0,启用 PicGo-Server (opens new window) ,并使用默认值的端口(36677)。当 Typora 使用 PicGo 上传图片时,PicGo 将被启动并保持运行。

对于 Linux/Windows 用户,请在安装后在 Typora 的偏好设置中设置 PicGo 二进制文件的路径。

PicGo.app 和 PicGo-Core(命令行)之间的区别 #

  • 目前 PicGo(应用程序)只有中文。
  • PicGo.app 提供了一个 GUI,因此与 CLI 版本相比更容易设置。
  • 使用 PicGo-Core(命令行)上传花费的计算资源较少,因为该进程只在上传过程中运行,并在上传成功或失败后退出。当通过 PicGo.app 上传时,PicGo.app 将始终保持运行,不会自动退出。另外,PicGo.app 是一个电子应用程序,它占用了更多的计算资源。
  • PicGo.app 和 PicGo-Core 使用不同的配置文件,但是你可以把 PicGo.app 配置文件中 picBed 关键下的 json 对象复制到 PicGo 的配置文件中。
  • PicGo.app 还提供其他功能,如上传历史、自动重命名等。

Upgit (Open source & lightweight native, for Windows / Linux / macOS) #

Upgit (opens new window) 是一个原生和轻量级的工具,帮助你上传图片到 github 仓库。

使用方法。

(1) 从 Release (opens new window) 下载。

(2) 将其重命名为 upgit (对于 Windows 用户,upgit.exe),将其保存在你喜欢的地方。

(3) 在以下 ~/.upgit.config.toml[UPGIT_DIRECTORY]/config.toml 进行配置:this sample config file (opens new window)

(4) 选择 File > Preferences…

移动到 Image 。选择 Custom Command 作为你的 Image Uploader

Command 文本框中输入 upgit 程序位置。

现在享受它吧!

Custom #

你可以配置一个自定义命令来上传图片,使用上述选项中没有列出的工具,甚至可以编写你自己的工具/脚本。Typora 会将所有需要上传的图片附加在你填写的自定义命令之后。

然后,Typora 将从你的自定义命令的标准输出的最后 N 行中获取图像尿素。(N 是要上传的图片的数量)。

例如,如果你写了一个工具 upload-image.sh,那么你可以在命令文件中输入 [some path]/upload-image.sh。Typora 将调用 [some path]/upload-image.sh "image-path-1" "image-path-2",上传位于 image-path-1image-path-2 的两张图片。然后,该命令可能会返回类似的信息。

Upload Success:
http://remote-image-1.png
http://remote-image-2.png

然后 Typora 将从输出中获得两个远程图像的网址,并替换 Markdown 文档中使用的原始本地图像。

你可以点击 "Test Uploader "按钮来验证你的自定义命令。

在自定义命令中使用当前文件名/文件路径 #

你可以在你的自定义命令中使用 ${filename}${filepath},它们将被替换为当前的 markdown 文件名和当前的文件路径。对于没有保存在你的磁盘上的 "无标题 "文件,它们将是空字符串。

插入图片时自动上传 #

全局设置 #

用户可以告诉 Typora 在插入时自动上传图片(包括从菜单、触摸栏插入图片,通过复制和粘贴或拖放)。要启用这一功能,请在 "插入时...... "选项下选择 "上传图片",如下截图所示。

那么,如果你希望 "自动上传 "只适用于本地图片,请只勾选 Apply above rules to local images,如果你也想重新上传已经托管在远程网站上的图片,你也可以勾选 Apply above rules to online images

每个文件的设置 #

首先,请在偏好设置中启用 Allow upload images automatically based on YAML settings

那么如果你的 Markdown 文件在 YAML 前言中包含以下配置,Typora 会在插入图片时使用这个选项自动上传图片。

typora-copy-images-to: upload

你也可以点击菜单→ 格式图像When insert local image…Upload Image,插入这个 YAML 前言并启用这个行为。

使用方法 #

上传选定的图像 #

你可以在图片上点击右键,然后点击 "上传图片",使用偏好设置中配置的应用程序上传选定的图片。

【视频】

上传所有本地图片 #

如果你的 Markdown 文件包含很多本地图片,而你想一键上传所有图片,你可以点击菜单→ 格式图像Upload All Local Images,上传所有本地图片。

故障排除 #

"在使用此功能之前,请在偏好设置中设置一个图像上传器。" #

为了使 "图像上传 "发挥作用,你必须在 "偏好设置 "的 configuration (opens new window) 部分之后设置一个图像上传器。

"未找到命令" #

如果你发送自定义命令,例如 "node upload-image xxx "来上传文件,你可能会遇到错误信息"/bin/bash xxx command not find",这是因为你的自定义命令二进制文件不在系统路径中。

例如,如果错误信息是 "找不到节点命令",那么请在终端使用 which node 来决定你的节点路径,然后用完整的 node 路径替换 node

图片上传失败 #

当上传图片失败时,Typora 会在调用你配置为图片上传提供者的第三个应用程序时打印出错误信息。你可以从错误信息中找到原因。

如果你不知道原因,你可以尝试通过点击偏好设置中的 "Test Uploader "按钮来验证图片上传选项,以及它是否成功。此外,你可以尝试使用那些没有 Typora 的应用程序上传图片,并检查它是否能成功。

如果你发现这些应用程序不能成功上传图片,你可以联系其维护者以获得进一步支持。

在 Windows 上有乱码的控制台输出 #

如果你使用自定义命令,并且在点击偏好设置中的 "Test Uploader "按钮后,它的控制台输出是乱码字符,你可以尝试强制进程使用 UTF8 编码,通过在你的自定义命令前添加 @chcp 65001 >nul & cmd/d/s/c

[PicGo ERROR]:错误。API v1 已被废弃,请参考 https://doc.sm.ms/ ,以获取 v2 API 文档。 #

这是由 PicGo 的默认图片托管服务:sm.ms 的支持问题引起的,请参考 PicGo/PicGo-Core#30 (opens new window) ,或使用默认以外的其他图片服务。

未能解析出来自于 #

#3309 (opens new window),Typora 要求图像的返回 url 以 http://, https://, 或 file:// 开始。其他协议不被支持。另外,在 HTML/Markdown 中,没有协议的图片 src,被视为相对路径。

EPERM: 操作不允许 mkdir "**/upload" #

这应该在 0.9.87 版本中得到修复,请升级 Typora。

从旧的 Typora 版本迁移过来 #

在 MacOS 上的 Typora 旧版本中,我们只提供与 "ipic "的整合。因此,如果你的旧版 Markdown 文档包含

typora-copy-images-to: ipic

Typora 仍将使用 ipic 来上传该文件中的图片,你可以通过改变成 typora-copy-images-to: upload 来更新行为。