python 實(shí)現(xiàn)圖片自動上傳七牛返回地址

python 實(shí)現(xiàn)圖片自動上傳七牛返回地址

使用markdown編寫文件,圖片插入一直不太方便,有些markdown編輯器實(shí)現(xiàn)的圖片插入并且自動上傳的功能,但是大多要收費(fèi),免費(fèi)的又存在各種限制,不能自定義圖床,不夠靈活等,本文利用Python這一靈活的腳本語言實(shí)現(xiàn)圖片自動上傳功能并返回圖片的云端地址。(采用的圖片服務(wù)器為七牛)


安裝python依賴

pip install qiniu
pip install pillow 
pip install pypiwin32

下載win32clipboard,直接點(diǎn)擊安裝

配置CameraDll.dll

下載CameraDll.dll以及注冊.bat,雙擊注冊.bat ,將其加入到系統(tǒng)環(huán)境中
下載地址

編寫python腳本

#!/usr/bin/env python
# coding=gb2312

# 此模塊主要提供抓圖功能,支持以下三種抓圖方式:
# 快捷鍵 自定義 ctrl + alt + z
# ********************************************

import ctypes
import ctypes.wintypes
import os
import uuid

import win32con
import win32clipboard as w
import wx
from PIL import ImageGrab

from qiniu import Auth, put_file


def capture_choose_windows():
    # 利用QQ截圖的DLL完成截圖功能(借鑒)
    try:
        # 加載QQ抓圖使用的dll
        dll_handle = ctypes.cdll.LoadLibrary('CameraDll.dll')

    except Exception:
        try:
            # 如果dll加載失敗,則換種方法使用,直接運(yùn)行,如果還失敗,退出
            os.system("Rundll32.exe CameraDll.dll, CameraSubArea")
        except Exception:
            return
    else:
        try:
            # 加載dll成功,則調(diào)用抓圖函數(shù),注:沒有分析清楚這個函數(shù)帶的參數(shù)個數(shù)
            # 及類型,所以此語句執(zhí)行后會報(bào)參數(shù)缺少4個字節(jié),但不影響抓圖功能,所
            # 以直接忽略了些異常
            dll_handle.CameraSubArea(0)
        except Exception:
            im = ImageGrab.grabclipboard()
            key = str(uuid.uuid4())
            save_pic(im, key + '.png')
            return


# 使用文件對框,保存圖片
def save_pic(pic, filename='未命令圖片.png'):
    app = wx.App()

    wildcard = "PNG(*.png)|*.png"
    dialog = wx.FileDialog(None, "Select a place", os.getcwd(),
                           filename, wildcard)
    if dialog.ShowModal() == wx.ID_OK:
        pic.save(dialog.GetPath().encode('gb2312'))
        upload_pic(filename, dialog.GetPath().encode('gb2312'))
    else:
        pass

    dialog.Destroy()


def upload_pic(key, path):
    access_key = '****************************************'
    secret_key = '****************************************'
    q = Auth(access_key, secret_key)
    bucket_name = 'myimage'
    token = q.upload_token(bucket_name, key, 3600)

    ret, info = put_file(token, key, path)
    if info.status_code == 200:
        w.OpenClipboard()
        w.EmptyClipboard()
        w.SetClipboardData(win32con.CF_TEXT, '![DESC](http://********.bkt.clouddn.com/' + str(key)+')')
        w.CloseClipboard()


if __name__ == "__main__":
    capture_choose_windows()

編寫bat腳本自動運(yùn)行python文件

@echo off  
D:  
cd D:\python
start pythonw test.py
exit  

保存為upPic.bat,右鍵發(fā)送桌面快捷方式
<center>


給快捷方式設(shè)置快捷鍵

</center>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容