Mac更换鼠标指针样式_ANI、CUR文件解析

前情提要 因为之前写了一篇mousecape的博客有一些回应,所以我决定写个续。主要是教大家怎么把cur文件和ani文件插入到mousecape里面,顺便提供几个做好的cape文件。
先给大家推荐一个bilibili的视频教程,也是一种把Windows鼠标样式文件插入mousecape的方法,如果没有批量转换的需求,可以照他的来。
以罗小黑鼠标样式为例 一、把cur、ani文件转成ico、gif或png

  1. cur和ani文件格式
    cur文件最简单,因为它和ico的格式是一样的,当然也不完全是这样,有一些cur文件也是采用和ani一样的策略来存的,所以bilibili那篇教程上有人评论说cur也拖不进去(如果不太理解“拖不进去”以及后文一些描述的意思,可以先去看我的上一篇博客),就是因为有一些cur文件不是ico格式,所以要和ani做一样的解析。
  2. cur、ani的在线解析和工具解析
    reaConverter等鼠标样式编辑工具都可以把cur、ani转化成常见图片格式。但是不一定可以macOS上使用,也不能批量转换,比较不实用。
    另外有一种线上转换的方法,像https://ezgif.com/ani-to-gif等网站都提供了转换方法,但是也不能批量,更不能离线。批量我试过利用爬虫技术来解决,不过没能做到,有能力的朋友可以一试。
    上面bilibili的教程也是提供了这个方案,如果没有批量转换的需求,可以试一下。
  3. cur、ani命令行解析
    因为有些鼠标样式集都会有较多的ani文件,还是会有批量转换的需求,所以我还是想分享一个命令行解析的法子。而且主要是我看到csdn上居然有人拿这个格式转换的代码来收费,不忍大家花冤枉钱,所以要将方法公诸于众。
    【Mac更换鼠标指针样式_ANI、CUR文件解析】github上有一个开源项目就是可以解析cur和ani的。虽然他的主要功能是做Windows和Linux鼠标样式文件的转化,但是稍微改造一下就可以把cur和ani转换成常见图片格式了。现在已经改造好了,放在gitee上,大家直接去下载就好。
    具体的使用方式建议参考README文档,这里我以罗小黑的鼠标指针样式为例做个介绍。
    大家可以先下载一下Win+罗小黑鼠标指针,如果链接失效可以私信索取。
    然后安装一下win2xcur_plus:
    pip install -e git+https://gitee.com/xuanyusan/win2xcur_plus.git#egg=win2xcur_plus

    先把cur文件转成ico,方便看:
    cd rename "s/cur/ico/" *.cur # 顺便鉴定一下cur文件是不是ico格式,如果不是 wincur2img --type png <非ico格式cur文件>

    ani则转成png长图:
    cd ls | grep ani | while read name; do wincur2img --type apng $name; done;

    最后效果如下:
    Mac更换鼠标指针样式_ANI、CUR文件解析
    文章图片

二、把ico文件和gif文件生成cape文件
有了gif或png文件就可以自己做cape文件了,具体怎么做可以看上一篇教程。
这次主要补充提一下几个bug和注意事项:
  1. FrameCount不能超过24
    Windows的ani文件对于帧数是比较宽松的,所以ani转png或gif,FrameCount可能会超。我在工具里是对24以上的做了抽帧处理,如果掉帧过于明显,还需要自己做一下优化。
  2. 应用变半透明的bug
    我们直接双击一个cape文件应用可能会导致样式变半透明,这时建议直接把文件拖到mousecape存放cape文件的目录下。
  3. 编辑变半透明的bug
    如果需要编辑一个鼠标样式,建议先做备份,然后再修改,改完把改动的地方复制到备份的文件里。
因为cape本质是一份xml文件,编辑也好,应用也好,可能会导致里面的data字段发生变化。具体的规律是如果cape文件里面有动图,编辑和应用就会导致data发生变化。下面贴一下xml的具体内容,图片数据就是放在array下的data字段,以base64的格式存储。
Author xuanyuwanqiu CapeName LuoXiaohei CapeVersion 1 Cloud Cursors com.apple.coregraphics.Arrow FrameCount 2 FrameDuration 1 HotSpotX 0.0 HotSpotY 0.0 PointsHigh 32 PointsWide 32 Representations ... ...

后记 因为变成cape文件需要指定图片和指针状态的关系以及HotSpot,所以就没办法自动化,但是这篇文章已经教大家把Windows鼠标样式文件变成macOS下能用的,相信已经足够了。我在的项目里提供了两个现成的cape文件给大家。
这些鼠标样式不知道会不会有版权问题,不然我也挺希望能建一个社区来放这些文件的,然后大家都可以来上传下载。为macOS社区贡献一些方案。有懂法律或者有想建站的可以来交流交流。
另外,如果关注这个东西人多的话,我会考虑想办法从代码层面修复一下mousecape的bug,而不是现在这种外部干扰的方法。

    推荐阅读