2
0
Selaa lähdekoodia

Add padding to solve visual glitch

Mike L 1 kuukausi sitten
vanhempi
commit
69d8a15162
3 muutettua tiedostoa jossa 12 lisäystä ja 9 poistoa
  1. 1 0
      README.md
  2. 8 6
      ani2cape.py
  3. 3 3
      config.py

+ 1 - 0
README.md

@@ -6,6 +6,7 @@
 - 添加了自动计算长宽的功能
   a. 长和宽均为-1,则直接从原图取得长宽数值
   b. 长、宽二者之一为-1,则从给定数值的边长计算出缩放倍率并等比缩放
+- 通过在四周增加2像素padding解决顶格的动态指针边缘出现黑线的问题
 
 注:
 - `ani2cape.py`不接受参数,直接运行即读取同目录下`config.py`内容,其中`Cursors`子项目`Path`属性使用相对路径时基于当前切换到的目录(而不是程序目录)

+ 8 - 6
ani2cape.py

@@ -85,8 +85,8 @@ def main():
         cursorSetting = {
             'FrameCount': 1,
             'FrameDuration': cursorConfig['FrameDuration'],
-            'HotSpotX': cursorConfig['HotSpot'][0],
-            'HotSpotY': cursorConfig['HotSpot'][1],
+            'HotSpotX': cursorConfig['HotSpot'][0] + 2.0,
+            'HotSpotY': cursorConfig['HotSpot'][1] + 2.0,
             'Representations': []
         }
         hidpiRatio = 2 if capeConfig['HiDPI'] else 1
@@ -100,15 +100,17 @@ def main():
                 for frameIndex in range(len(res['msg'])):
                     b = io.BytesIO(res['msg'][frameIndex])
                     frame, (width, height) = readCUR(b, width, height)
-                    position = (0, int(width * frameIndex))
+                    position = (2, 2 + int((height + 4) * frameIndex))
                     if frameIndex == 0:
-                        spriteSheet = Image.new('RGBA', (int(width), int(height) * len(res['msg'])))
+                        spriteSheet = Image.new('RGBA', (int(width + 4), int(height + 4) * len(res['msg'])))
                     spriteSheet.paste(frame, position)
             else:
                 logging.info('尝试作为CUR读入')
-                spriteSheet, (width, height) = readCUR(f, width, height)
+                frame, (width, height) = readCUR(f, width, height)
+                spriteSheet = Image.new('RGBA', (int(width + 4), int(height + 4)))
+                spriteSheet.paste(frame, (2, 2))
             logging.info(f'目标尺寸:{width}x{height}@{hidpiRatio}x')
-            cursorSetting['PointsHigh'], cursorSetting['PointsWide'] = width, height
+            cursorSetting['PointsHigh'], cursorSetting['PointsWide'] = width + 4, height + 4
             for scale in (1, 2) if capeConfig['HiDPI'] else (1,):
                 byteBuffer = io.BytesIO()
                 scaleImage(spriteSheet, scale).save(byteBuffer, format='tiff', compression='tiff_lzw')

+ 3 - 3
config.py

@@ -1,8 +1,8 @@
 capeConfig = {
-    'Author': '作者名',
-    'CapeName': '鼠标指针',
+    'Author': '卷鹅仔',
+    'CapeName': '内德维德鼠标指针',
     'CapeVersion': 1.0,
-    'Identifier': 'com.mihuashi.authornickname.cursors',
+    'Identifier': 'com.mihuashi.juanezaiuki.ndwd',
     'Cursors': {
         'com.apple.coregraphics.Arrow': {
             'FrameDuration': 0.1,