代码之家  ›  专栏  ›  技术社区  ›  Jellyse

从png到python中的seethrough剪贴画

  •  0
  • Jellyse  · 技术社区  · 7 年前

    我想知道在python中是否有一种简单的方法 让一切都变白 (或其他颜色) 在你的情节中完全看透 (不是alpha=……像剪贴画一样,不需要使用photoshop或其他程序。 计划是在一张图片或其他东西上放一个饼图。在下面的示例中:我只希望馅饼可见,这样我可以看到我的绿色背景和笑脸。 这有可能吗? 或者是photoshop,Illustrator,…有必要吗? enter image description here

    sizes1=array([[0.00000000e+00, 0.00000000e+00, 1.89602446e+00, 0.00000000e+00,
        0.00000000e+00, 1.85701021e+00],
       [0.00000000e+00, 0.00000000e+00, 2.56880734e+00, 0.00000000e+00,
        0.00000000e+00, 5.57103064e+00],
       [0.00000000e+00, 0.00000000e+00, 4.43802243e+02, 0.00000000e+00,
        0.00000000e+00, 5.61745590e+01],
       [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
        0.00000000e+00, 6.29062210e+01],
       [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
        0.00000000e+00, 6.54596100e+01],
       [0.00000000e+00, 0.00000000e+00, 4.44036697e+02, 0.00000000e+00,
        0.00000000e+00, 0.00000000e+00],
       [0.00000000e+00, 1.29564193e+00, 4.45463812e+02, 0.00000000e+00,
        0.00000000e+00, 6.66202414e+01],
       [0.00000000e+00, 1.74322733e+01, 4.73985729e+02, 0.00000000e+00,
        0.00000000e+00, 1.23491179e+02],
       [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
        0.00000000e+00, 0.00000000e+00],
       [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
        0.00000000e+00, 0.00000000e+00],
       [0.00000000e+00, 4.49941107e+01, 4.86381244e+02, 1.70394036e-02,
        9.60884354e+00, 1.36258124e+02],
       [0.00000000e+00, 2.41931684e+02, 5.22477064e+02, 3.25878594e-01,
        2.76360544e+01, 2.00092851e+02],
       [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
        0.00000000e+00, 0.00000000e+00],
       [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
        0.00000000e+00, 0.00000000e+00],
       [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
        0.00000000e+00, 0.00000000e+00]])
    aantal=np.array([8.0434686 ,   11.17618795, 1848.21974756,    5.73626313,
          5.96910038, 1844.07101113,  185.63055502, 1982.84201146,
          0.        ,    0.        , 2045.39056332, 2248.55164648,
          0.        ,    0.        ,    0.       ])     
    grootte=np.zeros(len(aantal))
    for i in range (0,len(aantal)):
        if aantal[i]<50:
            grootte[i]=0.5
        elif 50<aantal[i]<1000:
            grootte[i]=0.8
        elif 1000<aantal[i]<2000:
            grootte[i]=1
        else: 
            grootte[i]=1.5
    
    for i in range (0,len(sizes)): #with i timestep#len(Ypos1)
    
        a=sizes[i].argmax()
        explode=np.zeros(len(sizes[0]))
        explode[a] = 0.1# explode biggest slice
    
        plt.subplot(3,5,i+1)
    
    
        pie=plt.pie(sizes1[i], explode=explode, labels=None, colors=colors, counterclock=False,
        autopct='%1.1f%%', pctdistance=1.1,shadow=False, startangle=90, radius=grootte[i])#Names[0:len(sizes[0])]
    plt.savefig("Pies.png")
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   filippo    7 年前
    plt.savefig("Pies.png", transparent=True)
    
        2
  •  0
  •   R.F. Nelson    7 年前

    生成图像后,可以使用python将特定颜色的所有像素更改为透明。在您的示例图像中,如果您将所有白色像素都转换为透明的,那么可能会得到您想要的结果。

    This SO post 描述了一种实现这一点的方法。

    推荐文章