【问题标题】:From png to seethrough clipart in python从png到python中的透明剪贴画
【发布时间】:2018-05-24 03:34:28
【问题描述】:

我想知道在 python 中是否有一种简单的方法来使所有的白色(或其他颜色)在你的情节中完全透明(不是 alpha= .. . 东西)就像在剪贴画中一样,而无需使用 Photoshop 或其他程序。 计划是在图片或其他东西上放置饼图。在下面的示例中:我希望只有馅饼可见,所以我可以看到我的绿色背景和笑脸。 这可能吗? 还是 Photoshop、插画师、... 有必要?

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")

【问题讨论】:

  • 你的例子还有一些问题,请提供一个最小的工作,colors 未定义,sizes1 应该是sizes 我猜

标签: python matplotlib png


【解决方案1】:
plt.savefig("Pies.png", transparent=True)

【讨论】:

    【解决方案2】:

    生成图像后,您可以使用 python 将某种颜色的所有像素更改为透明。在您的示例图像中,如果您将所有白色像素都变为透明,则可能会产生您想要的结果。

    This SO post 描述了一种可以做到这一点的方法。

    【讨论】:

      猜你喜欢
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      相关资源
      最近更新 更多