I want to know how to convert MIDI ticks to actual playback seconds.
For example, if the MIDI PPQ (Pulses per quarter note) is 1120, how would I convert it into real world playback seconds?
我很难找到答案.但是,用于JNI函数调用的"jboject thiz"是什么?例如:
jobjectArray Java_com_gnychis_awmon_Test( JNIEnv* env, jobject thiz ) {
Run Code Online (Sandbox Code Playgroud)
我env常常用来分配对象,但是我从来没有使用过thiz而且我不确定它是什么用的.仅出于知识目的.
这可能是一件非常简单的事情,我也认为是这样,但显然不是。我一定花了一个星期的时间来尝试完成这项工作,但出于对我的热爱,我无法做到。
我需要的
我需要在 Python 中使用任何给定的字体(类似手写的)呈现任何给定的字符串(仅包含标准字符)。字体必须从 TTF 文件加载。我还需要能够准确地检测它的边界(获得文本的确切开始和结束位置,垂直和水平),最好在绘制之前。最后,如果输出是一个我可以继续处理的数组,而不是写入光盘的图像文件,那真的会让我的生活更轻松。
我试过的
Imagemagick 绑定(即 Wand):在设置图像大小并在其上渲染文本之前,无法弄清楚如何获取文本度量。
Pango 通过 Pycairo 绑定:几乎不存在的文档,无法弄清楚如何从文件中加载 TrueType 字体。
PIL(枕头):最有前途的选择。我已经设法准确地计算出任何文本的高度(令人惊讶的是它不是高度getsize返回值),但是某些字体的宽度似乎有问题。不仅如此,那些宽度有问题的字体也会被错误地渲染。即使使图像足够大,它们也会被切断。
以下是一些示例,文本为“Puzzling”:
字体:恋人争吵
结果:
字体:法哈多斯小姐
结果:
这是我用来生成图像的代码:
from PIL import Image, ImageDraw, ImageFont
import cv2
import numpy as np
import glob
import os
font_size = 75
font_paths = sorted(glob.glob('./fonts/*.ttf'))
text = "Puzzling"
background_color = 180
text_color = 50
color_variance = 60
cv2.namedWindow('display', 0)
for font_path in font_paths:
font = ImageFont.truetype(font_path, font_size)
text_width, text_height = font.getsize(text)
ascent, descent = font.getmetrics() …Run Code Online (Sandbox Code Playgroud)