草庐IT

使用PicGo-Core 和 阿里云 实现typora图片自动上传

佩弦的小风's Blog 2023-03-28 原文

目录

第1章 介绍

1.1 需求以及为什么使用

typora(笔记) + PicGo/对象OSS(上传至图片) + snipaste(截图)

1.1.1 需求

  • 因为在记笔记过程中,经常遇到类似云笔记的需求,需要上传到github,从家里电脑到公司电脑不同需求,这个时候经常因为图片路径写死当至切换设备图片没有,图片就不能显示.
  • 那时候通过相对路径,每个typora文件夹对一个图片img文件夹,转移时候带着img文件夹一起转移,文档上的图片路径相对路径,但是感觉还是不太方便,图片的img文件夹经常几十兆,给别人看也不方便

1.1.2 为什么使用PicGo/对象OSS(上传至图片)

听说PicGo可以上传图片,以及通过阿里云存储图片,而github估计会有点慢,以及gitee最近被审核不清楚就放弃了!同时typora内置了PicGo 直接使用

  • 听说下载的PicGo可能会与typora自带的PicGO端口冲突?所以不使用PidcGO.exe了,使用自带的PicGo-Core

1.1 PicGo & Oss

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

github: https://github.com/Molunerfinn/PicGo

PicGo 本体支持如下图床:

  • 七牛图床 v1.0
  • 腾讯云 COS v4\v5 版本 v1.1 & v1.5.0
  • 又拍云 v1.2.0
  • GitHub v1.5.0
  • SM.MS V2 v2.3.0-beta.0
  • 阿里云 OSS v1.6.0
  • Imgur v1.6.0

一些特色功能:

  • 支持拖拽图片上传
  • 支持快捷键上传剪贴板里第一张图片
  • Windows 和 macOS 支持右键图片文件通过菜单上传 (v2.1.0+)
  • 上传图片后自动复制链接到剪贴板
  • 支持自定义复制到剪贴板的链接格式
  • 支持修改快捷键,默认快速上传快捷键:command+shift+p(macOS)| control+shift+p(Windows\Linux)
  • 支持插件系统,已有插件支持 Gitee、青云等第三方图床
    • 更多第三方插件以及使用了 PicGo 底层的应用可以在 Awesome-PicGo 找到。欢迎贡献!
  • 支持通过发送 HTTP 请求调用 PicGo 上传(v2.2.0+)

1.2.1 PicGo-Core

PicGo-Core是PicGo2.0版本里将会预置的底层核心组件。它可以看做是一个简单的上传流程系统。

特性:

  • 支持CLI调用
  • 支持API调用
  • 支持插件系统

4个部件:

  1. Input(输入):接受来自外部的图片输入,默认是通过路径或者完整的图片base64信息
  2. Transformer(转换器):把输入转换成可以被上传器上传的图片对象(包含图片尺寸、base64、图片名等信息)
  3. Uploader(上传器):将来自转换器的输出上传到指定的地方,默认的上传器将会是SM.MS
  4. Output(输出):输出上传的结果,通常可以在输出的imgUrl里拿到结果

1.2.2 阿里云对象OSS

阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,多种存储类型供选择,全面优化存储成本。

OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

您可以选择标准存储:

  • 移动应用、大型网站、图片分享或热点音视频的主要存储方式,
  • 也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)、归档存储(Archive)、冷归档存储(Cold Archive)作为不经常访问数据的存储方式

因为我们只是需要一个可以存放图片的地方,所以选择了阿里云的对象OSS

  • 存储类型(四种不同类型)

    • 标准存储类型: 提供高持久、高可用、高性能的对象存储服务,能够支持频繁的数据访问
    • 低频访问存储类型适合长期保存不经常访问的数据(平均每月访问频率1到2次),存储单价低于标准类型;
    • 归档存储类型适合需要长期保存(建议半年以上)的归档数据;
    • 冷归档存储适合需要超长时间存放的极冷数据。
  • 存储空间(Bucket):

    (英语翻译?; 桶;一桶之量;(机器的)挖斗,铲斗;大量;投篮得分;存储桶) 存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。您可以根据实际需求,创建不同类型的存储空间来存储不同的数据。

  • 对象(Object)

    对象是OSS存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,例如最后修改时间、大小等信息,同时您也可以在元信息中存储一些自定义的信息。

  • 访问密钥 (AccessKey)

    AccessKey简称AK,指的是访问身份验证中用到的AccessKey ID和AccessKey Secret。OSS通过使用AccessKey ID和AccessKey Secret对称加密的方法来验证某个请求的发送者身份。AccessKey ID用于标识用户;AccessKey Secret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,必须保密。

第2章 使用

2.1 typora

typora(笔记) + PicGo/对象OSS(上传至图片) + snipaste(截图)

至少需要: 一个阿里云账号和¥9元(一年)以及安装好的typora

2.1.1 typora 设置

  1. 打开【Typora】,点击左上角【文件】,【偏好设置】

  1. 点击【图像】,选择【PicG0-Core(command line)】,点击【下载或更新】

下载完就成功了, 如果下载失败且无魔法(暂时不知道怎么办)

2.2 对象OSS

2.2.0 OSS购买

访问阿里云,选择折扣套餐

2.2.1 创建Bucket

创建Bucket,填写名称和设置相关配置,Bucket名称后面会用到

相当于买了一个可以存放东西的数据库,现在Bucket相当于库中专门放图片的地方

存储类型: 低频估计就是这个资源很少访问?估计图片不符合要求

同城冗余: 估计就是(比如杭州一个城市, 把你的数据放在杭州的三个地方存储, 防止其中一个出问题,另一个可以补救, 估计还有不同城市存储, 不过要花钱就没有选择)

版本控制: 感觉也是可以回滚到之前版本, 防止误删等操作,不知道要花钱也不选择

反正全部默认,不开通.

2.3 typora的 config配置

  1. 打开【Typora】,点击左上角【文件】,【偏好设置】,点击【图像】,【打开配置文件】

  2. 复制下面内容粘贴到打开的配置文件【config.json】

  3. 获取accessKeyId和accessKeySecret

    1. 右上角【用户头像】,点击【AccessKey管理】
    2. 没有则 创建新的
    1. 获取”bucket”,“area“,”customUrl“
      1. 点击进入管理控制台,点击【Bucket列表】,找到之前创建的Bucket名称并点击
      1. 点击概览,填写对应的【config.json】文件
{
  "picBed": {
    "uploader": "aliyun",
    "aliyun": {
    "accessKeyId": "",
    "accessKeySecret": "",
    "bucket": "", // 存储空间名
    "area": "", // 存储区域代号
    "path": "img/", // 自定义存储路径
    "customUrl": "", // 自定义域名,注意要加 http://或者 https://
    "options": "" // 针对图片的一些后缀处理参数 PicGo 2.2.0+ PicGo-Core 1.4.0+
    }
  },
  "picgoPlugins": {}
}

例子:

2.4 上传测试

上传成功则显示

到这里PicGo Core+阿里云OSS搭建的图床就成功了

2.5 使用注意事项

因为所有参考文章到这里就结束了,我只能自己摸索

  1. 首选你使用Snipaste截图,复制

  1. 在偏好设置

3.这时候图片被复制时就会自动上传,将本地地址变成 上传阿里云的地址

  1. 或者对已经存在的图片,右键点开手动上传

注意: 如果以前全部的文档不可能手动一个一个上传,所以可以

通过右上角菜单栏 格式 图像 上传全部本地图片

第三章 高级使用

暂无探索

第四章 总结

4.1 优点:

  1. 比较方便,使用内置PicGo-Core,无需下载, 直接上传图片,不需要在点开exe程序在使用
  2. 阿里云相对于github速度较快,gitee应该也速度不错(不过最近的审核...)

4.2 缺点:

  1. PicGO有许多功能,因为使用了内置命令行Core,导致这些功能例如

    • 支持网页图片拖拽上传

    • 相册支持全选、shift多选

    • 支持导出图床配置二维码与手机客户端联动

    • .......

    不能使用,略有遗憾

  2. 虽然对象OSS的花费不高,但还是花费钱,不是github这种可以免费.而且OSS虽然一年便宜但是以后日积月累,花销也是蛮大的.

注意:本文部分参考:(利用PicGo Core+阿里云OSS搭建图床)https://developer.aliyun.com/article/921570

有关使用PicGo-Core 和 阿里云 实现typora图片自动上传的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐