• 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上居然有人拿这个格式转换的代码来收费,不忍大家花冤枉钱,所以要将方法公诸于众。

      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 <Win+罗小黑鼠标指针 目录>
      rename "s/cur/ico/" *.cur
      # 顺便鉴定一下cur文件是不是ico格式,如果不是
      wincur2img --type png <非ico格式cur文件>
      

      ani则转成png长图:

      cd <Win+罗小黑鼠标指针 目录>
      ls | grep ani | while read name;do wincur2img --type apng $name;done;
      

      最后效果如下:

      ico

    二、把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的格式存储。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>Author</key>
    	<string>xuanyuwanqiu</string>
    	<key>CapeName</key>
    	<string>LuoXiaohei</string>
    	<key>CapeVersion</key>
    	<real>1</real>
    	<key>Cloud</key>
    	<false/>
    	<key>Cursors</key>
    	<dict>
    		<key>com.apple.coregraphics.Arrow</key>
    		<dict>
    			<key>FrameCount</key>
    			<integer>2</integer>
    			<key>FrameDuration</key>
    			<real>1</real>
    			<key>HotSpotX</key>
    			<real>0.0</real>
    			<key>HotSpotY</key>
    			<real>0.0</real>
    			<key>PointsHigh</key>
    			<real>32</real>
    			<key>PointsWide</key>
    			<real>32</real>
    			<key>Representations</key>
    			<array>
    				<data>
    				... ...
                                    </data>
                           </array>
                    </dict>
            </dict>
    </dict>
    </plist>
    

    后记

    因为变成cape文件需要指定图片和指针状态的关系以及HotSpot,所以就没办法自动化,但是这篇文章已经教大家把Windows鼠标样式文件变成macOS下能用的,相信已经足够了。我在的项目里提供了两个现成的cape文件给大家。

    这些鼠标样式不知道会不会有版权问题,不然我也挺希望能建一个社区来放这些文件的,然后大家都可以来上传下载。为macOS社区贡献一些方案。有懂法律或者有想建站的可以来交流交流。

    另外,如果关注这个东西人多的话,我会考虑想办法从代码层面修复一下mousecape的bug,而不是现在这种外部干扰的方法。

    试探性地留下名字
  • 相关阅读:
    SpringBoot2.x 工作流开源项目
    Nginx:终于有人把 Nginx 说清楚了,图文详解!
    MySQL8配置修改:Mysql group by this is incompatible with sql_mode=only_full_group_by
    解决错误:java.sql.SQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
    工作时使用的vim配置
    工作笔记整理
    Linux mint启用内核转储
    usleep和sleep
    gdb使用
    掩码配置为255.255.255.255
  • 原文地址:https://www.cnblogs.com/xuanyu-10-18/p/15614711.html
Copyright © 2020-2023  润新知