亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Mac 上使用 Python 制作壓縮截圖的 Alfred Workflow

系統 1788 0

在編寫 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。
Mac 上使用 Python 制作壓縮截圖的 Alfred Workflow_第1張圖片
在彈出的配置面板填寫 Workflow 的名稱、描述、分類、id、創建者、網站,保存。
Mac 上使用 Python 制作壓縮截圖的 Alfred Workflow_第2張圖片
在 Workflow 的圖形界面上通過 右鍵-Inputs-Keyword ,新建一個輸入動作,設置關鍵字,這里我設置關鍵字為 cp。
Mac 上使用 Python 制作壓縮截圖的 Alfred Workflow_第3張圖片
Mac 上使用 Python 制作壓縮截圖的 Alfred Workflow_第4張圖片
生成輸入動作后,點擊輸入圖塊左側的凸起,創建一個后續動作。選擇 Run Script ,運行一個腳本。
Mac 上使用 Python 制作壓縮截圖的 Alfred Workflow_第5張圖片
在腳本的配置界面,選擇語言為 python,下方的輸入框中填入準備好的 Python 腳本,保存。
Mac 上使用 Python 制作壓縮截圖的 Alfred Workflow_第6張圖片
點擊腳本圖塊右側的凸起,添加一個結束動作,選擇 Post Notification ,彈一個通知。
Mac 上使用 Python 制作壓縮截圖的 Alfred Workflow_第7張圖片

三、使用

ctrl + cmd + shift + 4 截圖,或者復制一張網頁的圖片。

喚起 Alfred,輸入 cp,即可完成壓縮,并重新寫入剪貼板。

默認會壓縮為寬度 720,可以輸入 cp xxx ,來壓縮為 xxx 的寬度。
Mac 上使用 Python 制作壓縮截圖的 Alfred Workflow_第8張圖片


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产午夜视频在线观看第四页 | 亚洲国产欧美在线观看 | 久久a视频| 天海翼一区二区三区免费 | 亚州精品永久观看视频 | 幸福宝色多多 | 亚洲成色综合一区二区三区四区 | 一本久草| 九九精品视频一区在线 | 天天躁狠狠躁狠狠躁夜夜躁 | 99久久综合精品免费 | 日本另类αv欧美另类aⅴ | 69视频在线观看福利视频 | 欧美亚洲天堂 | 国产成人综合亚洲一区 | 91在线视屏 | 91精品国产美女福到在线不卡 | 色偷偷久久 | 亚洲成在人 | 最新99国产成人精品视频免费 | 99国产精品久久久久久久成人热 | 99热久久国产精品这里 | 看一级毛片 | 资源站在线 | 久久毛片免费 | 亚洲成 人a影院青久在线观看 | 九九精品免费视频 | 亚洲精品国产综合99久久一区 | 国产精品毛片久久久久久久 | 欧美高清无砖专区欧美精品 | 中文字幕在线免费视频 | 91国内视频在线观看 | 99精品这里只有精品高清视频 | 亚洲国产精品欧美日韩一区二区 | 亚洲综合激情六月婷婷在线观看 | 国产一级做a爱免费视频 | 日本免费人成黄页网观看视频 | 国产一级久久久久久毛片 | 国产精品伦理一区二区三区 | 草视频在线观看 | 99国产精品九九视频免费看 |