首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PIL/枕头倒置透明看似任意

PIL/枕头倒置透明看似任意
EN

Stack Overflow用户
提问于 2014-06-06 18:52:08
回答 1查看 1.1K关注 0票数 4

我已经安装了Pillow2.4.0(包括OS上的虚拟env和Ubuntu14.04 EC2)。我编写了以下脚本来生成波形可视化(drawing some inspiration from Jiaaro)。利用Pydub库进行波形分析,利用PIL/Pillow的ImageDraw函数绘制曲线。wav变量是audiosegment() (来自Pydub库),imgname是一个字符串:

代码语言:javascript
复制
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)。

以下是预期输出的图片:

不正确的地方(右键单击save并在图像编辑器中打开,因为它的背景是白色的,中间是透明的):

有没有人经历过类似的问题?我是不是遗漏了一些明显的东西(可能)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-06 22:26:24

事实证明,这比我想象的要简单得多(令人惊讶)。感谢@MarkRansom这里的灵感。

用'P‘而不是'RGBA’实例化图像,

代码语言:javascript
复制
im = Image.new('P', size, 255)

定义您的颜色(对于黑色,0)

代码语言:javascript
复制
color=0

确保保存调用将白色区域定义为透明区域,而不是黑色区域:

代码语言:javascript
复制
im.save(name, 'GIF', transparency=255)

但还是有一点奇怪,为什么它只会在某些时候失败与原始代码..。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24088786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档