typora+华为云oss存储做图床
背景:PicGo | PicGopic这个项目,并没有对华为云的对象存储服务,我昨天在看论坛的时候,一个哥们的typora 配合 csdn 这个想法给了我提示,通个宵把华为云的搞出来了。
代码如下:
# -*- coding: utf-8 -*-
import sys
import yaml
import pyperclip as pc
from obs import ObsClient
import tkinter as tk
from PIL import Image, ImageTk# 导入PIL模块中的Image、ImageTk
import tkinter.messagebox
con_path = sys.argv
pic_path = sys.argv
pic_name = sys.argv.split("\\")[-1]
# 读取文件
def readfile(filepath):
f = open(filepath, encoding="utf-8")
yaml_reader = yaml.load(f.read(), Loader=yaml.FullLoader)
f.close()
return yaml_reader
# 上传文件到 oss
def upload(name):
obsClient = ObsClient(
access_key_id=config['access_key_id'],
secret_access_key=config['secret_access_key'],
server=config['server']
)
content = open(pic_path, 'rb')
resp = obsClient.putContent(config['bucketname'], name, content=content)
# pc.copy('![](' + resp.body['objectUrl'] + ')')
pc.copy('![](' + resp.body['objectUrl'] + ')')
print(resp.body['objectUrl'])
return resp['status']
# 提交
def but():
name = label2.get("1.0", tk.END + "-1c")
if len(name) == 0:
tk.messagebox.showinfo('提示', '请输入路径')
else:
if tk.messagebox.askquestion('提示', '上传后的文件名为 ' + name + ' ') == "yes":
if upload(name=name) < 300:
tk.messagebox.showinfo('提示', '上传成功,链接已经放到了粘贴板')
sys.exit(1)
else:
tk.messagebox.showinfo('提示', '上传失败,请重新操作上传')
config = readfile(con_path)
# 创建根窗口
root = tk.Tk()
# 设置根窗口标题
root.title("华为oss工具-海绵")
# 设置窗口大小
winWidth = 600
winHeight = 600
# 获取屏幕分辨率
screenWidth = root.winfo_screenwidth()
screenHeight = root.winfo_screenheight()
x = int((screenWidth - winWidth) / 2)
y = int((screenHeight - winHeight) / 2)
# 设置主窗口标题
root.title("华为oss工具-海绵")
# 设置窗口初始位置在屏幕居中
root.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
# 设置窗口图标
# root.iconbitmap("./image/icon.ico")
# 设置窗口宽高固定
root.resizable(0, 0)
image = Image.open(pic_path)# 创建Label组件,通过Image=photo设置要展示的图片
image = image.resize((int(screenWidth / 4), int(screenHeight / 4)))
photo = ImageTk.PhotoImage(image)# 创建tkinter兼容的图片
label = tk.Label(root, image=photo)# 创建Label组件对象
label1 = tk.Label(root, text='\n\n读取到以上图片,图片的文件名字为' + pic_name + ',请重命名\n\n')# 创建Label组件对象
label2 = tk.Text(root, height=1, width=30)
label3 = tk.Message(root, text='\n\n')# 创建Label组件对象
label4 = tk.Button(root, text='确定上传', command=but)
label.pack()# 展示Label对象
label1.pack()# 展示Label对象
label2.pack()
label3.pack()
label4.pack()
root.mainloop()# 保持窗口展示
当然,我把这个代码直接打包成了 exe 可运行的程序,都在链接里面了。注意:这个脚本执行的时候 ,需要一个配置文件。
如何使用
右键图片上传就会唤起这个程序,为什么要加一个重命名的操作呢? 其实 一个是为了重命名,一个为了放到不同的文件夹里面去。。。。如果你的命名是 test/pic.jpg 。在上传的时候就会新建 test 文件夹 , 然后在把图片放到这个文件夹下面。
重点内容:上传成功的时候,程序会关闭,但是 typora 会报错,不用管。这个是 typora 的问题,但是图片是上传到了的。上传成功之后会返回一个链接 ,程序已经帮你把这个链接放到你的剪贴板,直接ctrl + v 粘贴 就可以了。这时候 typora 就可以显示图片了。。
直接ctrl + v 粘贴 就可以了。这时候 typora 就可以显示图片了。。
直接ctrl + v 粘贴 就可以了。这时候 typora 就可以显示图片了。。
如何使用
在 typora 里面设置。 这里一定要使用 绝对路径 。
链接
链接: https://pan.baidu.com/s/1PBWYRrrCKQc4bzYNCGZx8Q?pwd=ck6c 提取码: ck6c 复制这段内容后打开百度网盘手机App,操作更方便哦
开创者 发表于 2022-1-20 10:43
这个能通用吗?支持其它cms吗?
目前支持华为云 , 如果你是阿里腾讯的,推荐用 picgo ,因为picgo没有华为云,我就做了这个。当然你可以改改代码。支持阿里的应该不难 i80980 发表于 2022-1-19 23:35
推荐哪个平台做图床?
码云免费,具体啥情况不清楚,阿里,腾讯都有这种oss存储,不过要钱,个人使用流量消耗其实不算大 推荐哪个平台做图床?{:301_979:} i80980 发表于 2022-1-19 23:35
推荐哪个平台做图床?
码云不错 BIGOcean 发表于 2022-1-20 01:48
码云不错
码云超过1M不显示,后来才发现原来要登陆才显示 这个能通用吗?支持其它cms吗? 在用gitee作图床 觉得也挺好的 i80980 发表于 2022-1-20 10:02
码云超过1M不显示,后来才发现原来要登陆才显示
我擦 这倒是个新发现 影子是时光的心. 发表于 2022-1-20 10:57
在用gitee作图床 觉得也挺好的
确实也可以,还免费 用github作图床
页:
[1]
2