如何制作每日日历图标

大家好,我是6C
一个爱折腾的营销人

这次的这个折腾呢,是我在用Notion记日记的过程中,希望有几月几日星期几的icon。然而,我自己也没有画ICON的能力。

直到有一天偶然发现Mac电脑的DOCK栏有显示日期(当然后面发现launchpad页面更好),那是不是每天截一个固定比例的图存下来就可以了。

说干就干!

step1 将屏幕窗口定位到固定页面

  • Launch Pad 页面上的图标特别适合用来截取
    • 位置固定不变
    • 图标比较大
  • 通过pykeyboard包实现
    • 设置lanuch pad快捷键盘 command + L
    • 通过pykeyboard包按下键盘定位到页面
      • key_press()方法
        def pressKey():
            k = mac.PyKeyboard()
            k.press_key("command")
            k.press_key("l")
            k.release_key("l")
            k.release_key("command")
        

step 2 获取当前屏幕截图并裁剪

  • pyscreenshot包抓起图片
    • grab()方法
  • 完成图片旋转
    • rotate()方法,角度是逆时针
  • 裁剪固定图标的位置
    • 计算到图片对于到像素位置
    • 用image.crop()方法来裁切,四个数字到顺序分别为,左,上,右,下
def capture(filename):
    img = pyscreenshot.grab().rotate(350)
    img2 = img.crop(box=(1950,155,2160,390))
    img2.save('/Users/louis/PycharmProjects/pachong/02project_calendar_icon/' + filename + ".png")

step 3 去底色

  • 找了特别久,综合下来还是removebg的API比较好用
def remove(filename):
    response = requests.post(
        '<https://api.remove.bg/v1.0/removebg>',
        files={'image_file': open('/Users/louis/PycharmProjects/pachong/02project_calendar_icon/' + filename + ".png", 'rb')},
        data={'size': 'auto'},
        headers={'X-Api-Key': 'THIS IS YOUR API KEY'},
    )
    if response.status_code == requests.codes.ok:
        with open('/Users/louis/Documents/04编程/' + filename + '.png', 'wb') as out:
            out.write(response.content)
    else:
        print("Error:", response.status_code, response.text)
  • 然后偶然的发现,快捷指令可以很方便的使用API,后续有更多可能

step5 固定时间每天自动运行

  • schedule包实现
    • 先定义一个job
    def job_icon(filename):
        # filename = str('%02d' % time.localtime().tm_mon) + str('%02d' % time.localtime().tm_mday)
        Icon.capture(filename)
        Icon.remove(filename)
    
    • 设定自动运行的时间
    filename = str('%02d' % time.localtime().tm_mon) + str('%02d' % time.localtime().tm_mday)
    schedule.every().day.at("00:02").do(job_icon, filename=filename)
    
    • 循环运行
    while True:
        schedule.run_pending()
        time.sleep(10000)
    
  • 同步了解了一下,怎么调用另外一个python文件,从文件夹开始调用
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C语言经典例程100例 这篇文章主要介绍了C语言经典例程100例,经典c程序100例,学习c语言的朋友可以参考一下...
    縸_3354阅读 361评论 0 0
  • time模块: 时间戳:就是从1970年1月1日0时刻到现在的毫秒数,其实在其他语言里面基本上都是毫秒数,但是在p...
    hello_我的哥阅读 262评论 0 0
  • 常用模块 认识模块 什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文...
    go以恒阅读 1,987评论 0 6
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,822评论 0 8
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 125,864评论 2 7