4

Pillow 2.4.0 をインストールしました (OS X の仮想環境と Ubuntu 14.04 EC2 の両方に)。波形の視覚化を生成するために、次のスクリプトを作成しました ( Jiaaro からインスピレーションを得ています)。Pydub ライブラリを使用して波形を分析し、PIL/Pillow の ImageDraw 関数を使用して線を描画します。wav 変数は audiosegment() (Pydub ライブラリから) で、imgname は文字列です。

def draw_waveform(wav, imgname, color="#000000", w=400, h=40):
    sound = wav
    name = imgname
    width = w
    height = h
    color = color

    chunk_length = len(sound) / width

    loudness_of_chunks = [
        sound[ i*chunk_length : (i+1)*chunk_length ].rms
        for i in range(width)]

    max_rms = max(loudness_of_chunks)
    scale = max_rms/(height/2)

    size = (width,height)
    im = Image.new('RGBA', size, (255, 255, 255, 255))

    draw = ImageDraw.Draw(im)

    for i in range(1, width):
        pos = (width - i, height/2 + loudness_of_chunks[i]/scale-4)
        draw.line((width - i,height/2) + pos, fill=color)
        pos = (width - i, height/2 - loudness_of_chunks[i]/scale+4)
        draw.line((width - i,height/2) + pos, fill=color)

    del draw

    im.rotate(180).save(app.config['UPLOAD_FOLDER'] + '/' + name, 'GIF', transparency=0) #, transparency=0

    return app.config['UPLOAD_FOLDER'] + '/' + name

ほとんどの場合、すべてがグルーヴィーです。一部の波形、特にピークに最も近い波形では、PIL は透明度を反転させた GIF を出力します。波形は透明になり、その周囲のスペースは白になります。通常、背景は透明で、波形は黒 (#000000) です。

予想される出力の図を次に示します。

正しい出力

そして間違っています (右クリックして名前を付けて保存し、画像エディターで開きます。背景は白で、中央は透明です):

不正な出力

誰かが同様の問題を経験しましたか? 明らかな(可能性が高い)何かが欠けていますか?

4

1 に答える 1