在編寫 markdown 時,經常出現很小的圖片被放得很大,為了解決這個問題,讓視覺上變得好看點,決定編寫一個壓縮圖片的 Alfred Workflow。
文章目錄
- 一、Python 程序的編寫
- 二、新建 Alfred Workflow
- 三、使用
一、Python 程序的編寫
在 Mac 上獲取剪貼板的圖片可查看這里:mac 上 Python 讀寫剪貼板圖片、文字。
編寫好的代碼如下:
# coding=utf-8
import
os
import
io
from
PIL
import
Image
,
ImageGrab
from
AppKit
import
NSPasteboard
,
NSArray
,
NSData
,
NSImage
# 壓縮圖片
def
resize_image
(
img
,
target_width
=
720
)
:
origin_width
,
origin_height
=
img
.
size
target_height
=
int
(
origin_height
*
target_width
/
origin_width
)
return
img
.
resize
(
(
target_width
,
target_height
)
,
Image
.
ANTIALIAS
)
# 獲取圖片 bytes
def
get_img_bytes
(
img
)
:
img_bytes
=
io
.
BytesIO
(
)
img
.
save
(
img_bytes
,
format
=
'PNG'
)
return
img_bytes
# 保存圖片至剪貼板
def
save_img_bytes_to_pasteboard
(
img_bytes
)
:
pb
=
NSPasteboard
.
generalPasteboard
(
)
# 必須先清除
pb
.
clearContents
(
)
imgNsData
=
NSData
.
alloc
(
)
.
initWithBytes_length_
(
img_bytes
.
getvalue
(
)
,
img_bytes
.
tell
(
)
)
imgNsImage
=
NSImage
.
alloc
(
)
.
initWithData_
(
imgNsData
)
array
=
NSArray
.
arrayWithObject_
(
imgNsImage
)
pb
.
writeObjects_
(
array
)
query
=
"720"
# 讀剪貼板的圖片
img
=
ImageGrab
.
grabclipboard
(
)
if
img
is
not
None
:
print
"orginWH "
,
img
.
size
resizedImg
=
resize_image
(
img
,
int
(
query
)
)
print
"resizedWH"
,
resizedImg
.
size
resizedImgBytes
=
get_img_bytes
(
resizedImg
)
save_img_bytes_to_pasteboard
(
resizedImgBytes
)
else
:
print
"pasteboard no img"
二、新建 Alfred Workflow
打開 Alfred,
cmd + ;
進入設置,選擇 Workflows。
在左側面板的下方點擊
+
,彈出 Workflow 的創建面板,點擊
Blank Workflow
,新建一個空白的 Workflow。
在彈出的配置面板填寫 Workflow 的名稱、描述、分類、id、創建者、網站,保存。
在 Workflow 的圖形界面上通過
右鍵-Inputs-Keyword
,新建一個輸入動作,設置關鍵字,這里我設置關鍵字為 cp。
生成輸入動作后,點擊輸入圖塊左側的凸起,創建一個后續動作。選擇
Run Script
,運行一個腳本。
在腳本的配置界面,選擇語言為 python,下方的輸入框中填入準備好的 Python 腳本,保存。
點擊腳本圖塊右側的凸起,添加一個結束動作,選擇
Post Notification
,彈一個通知。
三、使用
ctrl + cmd + shift + 4
截圖,或者復制一張網頁的圖片。
喚起 Alfred,輸入 cp,即可完成壓縮,并重新寫入剪貼板。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
