【问题标题】:MoviePy cannot display non-English text properlyMoviePy 无法正确显示非英文文本
【发布时间】:2017-02-05 14:41:01
【问题描述】:

我使用 MoviePy 从图像创建视频并在图像底部添加一些注释。问题是我要添加的文本是越南语(不是英语),因此 MoviePy 无法正确显示。

具体来说,下面是我的代码

# -*- coding: utf-8 -*-
from moviepy.editor import *

# create clip from image
clip = ImageClip('img/1.jpg').on_color((1920, 1080))
clip = clip.set_duration(2)

# add annotation to clip
txtclip = TextClip('Truyện Kiều Nguyễn Du', fontsize=50, color='red')
cvc = CompositeVideoClip([ clip, txtclip.set_pos(('center', 'bottom'))])
cvc = cvc.set_duration(2)

# write video to file
cvc.write_videofile("text.mp4", fps=24)

它不显示Truyện Kiều Nguyễn Du,而是显示Truy?n Ki?u Nguy?n Du

我认为主要问题来自ImageMagick,因为当我使用命令时

convert -size 400x200 xc:khaki -gravity Center -pointsize 30 -annotate 0 "Truyện Kiều Nguyễn Du" u8_an.png

ImageMagick 也会创建具有相同问题的图像。如果你能帮我解决它,请告诉我。

更新:我也尝试将字符串转换为 utf-8,但它不起作用

t = u'Truyện Kiều Nguyễn Du'.encode('utf-8') txtclip = TextClip(t, fontsize=50, color='red')

【问题讨论】:

  • 默认字体可能有问题。指定一个您知道包含越南语字符的字符。您可能还需要将文本显式编码为 UTF-8。
  • 顺便说一句,对于 Unicode 问题,提及 Python 版本和操作系统总是一个好主意。
  • 您好,我使用的 Python 版本是 2.7.12。我的操作系统是 Ubuntu 16.04 LTS 64 位。我还明确地将文本编码为 UTF8,但它不起作用``t = u'Truyện Kiều Nguyễn Du'.encode('utf-8') txtclip = TextClip(t, fontsize=50, color='red') ` ` 你能给我更多的字体建议吗?
  • 您应该将该信息添加到问题本身中。我建议尝试您的文本编辑器或控制台使用的字体,因为它们看起来像是处理越南语。
  • 另外,由于您使用的是 Python 2,因此您应该在代码中使用 u 标记所有 Unicode 字符串文字,就像您在注释中的代码中所做的那样。

标签: python imagemagick moviepy


【解决方案1】:

根据@Gloin 的建议,我将我的解决方案作为答案发布。

通过为TextClip 使用不同的字体来修复它。具体来说,这是解决方案

# -*- coding: utf-8 -*-
from moviepy.editor import *

# create clip from image
clip = ImageClip('img/1.jpg').on_color((1920, 1080))
clip = clip.set_duration(2)

# add annotation to clip
t = u'Truyện Kiều Nguyễn Du'.encode('utf-8')
txtclip = TextClip(t, fontsize=50, color='red', font='FreeMono')
cvc = CompositeVideoClip([ clip, txtclip.set_pos(('center', 'bottom'))])
cvc = cvc.set_duration(2)

# write video to file
cvc.write_videofile("text.mp4", fps=24)

我认为问题在于我们需要考虑(1)使用 utf-8 编码字符串(2)使用合适的字体推送到 ImageMagick(在我的情况下FreeMono 是合适的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2021-02-04
    相关资源
    最近更新 更多