【图片转ASS工具】png2ass

# -*- coding: utf-8 -*-
import sys
from tcaxPy import *

try:
        input = sys.argv[1]
except:
        print('Error: none input image file!')
        sys.exit()
output = input
width = 1280
height = 720
ass_header = """[Script Info]\r
; This script is generated by png2ass powered by TCAX 1.2.0\r
; Welcome to TCAX forum http://tcax.org\r
ScriptType: v4.00+\r
Collisions:Normal\r
PlayResX:{width}\r
PlayResY:{height}\r
Timer:100.0000\r
\r
[V4+ Styles]\r
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding\r
Style: TCMS,Arial,30,&H00FF0000,&HFFFF0000,&H000000FF,&HFF000000,0,0,0,0,100,100,0,0,0,1,0,5,15,15,10,1\r
Style: TCPS,Arial,1,&HFFFFFFFF,&HFFFFFFFF,&HFFFFFFFF,&HFFFFFFFF,0,0,0,0,100,100,0,0,0,0,0,7,0,0,0,1\r
\r
[Events]\r
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\r
\r""".format(width=width, height=height)

data = {
        val_OutFile : output,
        val_AssHeader : ass_header,
        val_ResolutionX : width,
        val_ResolutionY : height,
}

def png2ass():
        file_name = GetVal(val_OutFile) + '.ass'
        ass_header = GetVal(val_AssHeader)
        ASS_FILE = CreateAssFile(file_name, ass_header)
        ASS_BUF = []
        PIX = ImagePix((input))
        dx = (GetVal(val_ResolutionX) - PIX[1][0]) / 2 - PIX[0][0]        # x middle of the screen
        dy = (GetVal(val_ResolutionY) - PIX[1][1]) / 2 - PIX[0][1]   # y middle of the screen

        ## -- pix convert start
        initPosX = dx + PIX[0][0]
        initPosY = dy + PIX[0][1]
        for h in range(PIX[1][1]):
                posY = initPosY + h
                for w in range(PIX[1][0]):
                        posX = initPosX + w
                        idx  = 4 * (h * PIX[1][0] + w)
                        pixR = PIX[2][idx + 0]
                        pixG = PIX[2][idx + 1]
                        pixB = PIX[2][idx + 2]
                        pixA = PIX[2][idx + 3]
                        if pixA != 0:
                                ass_main(ASS_BUF, SubL(0, 1000, 0, Pix_Style), pos(posX, posY) + color1(FmtRGB(pixR, pixG, pixB)) + alpha1(255 - pixA), PixPt())
        ## -- pix convert end
        
        WriteAssFile(ASS_FILE, ASS_BUF)         # write the buffer in memory to the file
        FinAssFile(ASS_FILE)

if __name__ == "__main__":
        tcaxPy_InitData(data)
        png2ass()

PNG图片转ASS工具,基于TCAX库
参考自:http://www.tcax.org/forum.php?mod=viewthread&tid=176&extra=page%3D1

GitHub下载:https://github.com/emako/png2ass/releases

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SVG图片换成ASS绘图时出现错误可能由以下原因导致: 1. SVG格式不支持导出为ASS格式。SVG是一种矢量图形格式,而ASS是一种字幕样式格式,二者的数据结构和功能完全不同,因此直接将SVG换为ASS可能会导致错误。 2. 换过程中出现了文本编码或编码冲突。SVG和ASS使用的是不同的文本编码方式,如果工具在进行编码换时出现错误,可能导致最终生成的ASS文件无法正确解析。 3. SVG文件包含了ASS不支持的功能或属性。SVG拥有丰富的特性和属性,而ASS的功能相对有限,如果SVG中包含了ASS不支持的特性,换过程中可能无法正确处理,从而产生错误。 解决这个问题的方法有: 1. 使用专门的SVG到ASS工具。目前市面上有一些工具可以将SVG换为ASS格式,这些工具能够处理换过程中的各种细节问题,提供更准确的换结果。可以尝试使用这些工具来解决问题。 2. 修改SVG文件以适应ASS格式要求。如果了解ASS格式的特点和限制,可以尝试修改SVG文件,去除不支持的功能或属性,以使其能够顺利换为ASS格式。 3. 使用其他可接受ASS格式的图形文件替代。如果SVG无法正确换为ASS,可以考虑使用其他兼容ASS格式的图形文件,如PNG或JPEG等来代替。 综上所述,当SVG图片换为ASS绘图时出现错误,可能是由于格式不兼容、编码冲突或不支持的特性等原因所致。解决方法包括使用专门的工具、修改SVG文件或使用其他格式的图形文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值