【问题标题】:Python Image Library - Make area of image transparentPython图像库 - 使图像区域透明
【发布时间】:2012-09-01 15:01:48
【问题描述】:

对于比我更了解 Python 图像库的人,我有一个简短的问题。我有一个带有 alpha 通道的 png 图像,我希望前两行像素完全透明。而已!到目前为止,我的努力使前两行透明,但原始图像丢失了它的 alpha 通道信息。有谁知道实现这一目标的最佳方法?

【问题讨论】:

    标签: python python-imaging-library alpha-transparency


    【解决方案1】:

    你可以这样做。

    img = Image.open("withAlpha.png")
    p = img.load()
    
    for y in range(2):
        for x in range(img.size[0]):
            t = list(p[x,y])
            t[3] = 0
            p[x,y] = tuple(t)
    
    img.save("result.png")
    

    【讨论】:

      【解决方案2】:

      我会这样做:

      img = Image.open("myimage.png")
      p = img.load()
      alpha = img.split()[-1]
      width, height = img.size
      for y in range(2): #First two rows
          for x in range(width): #The whole row
              alpha[x, y] = 0
      img.putalpha(alpha)
      

      我希望这行得通。

      【讨论】:

      • 看起来应该可以了!但是当我执行 img.split() 时出现问题:文件“C:\Python27\lib\site-packages\PIL\Image.py”,第 1497 行,如果 self.im.bands == 1 则拆分:AttributeError: 'NoneType' 对象没有属性 'bands'。图像肯定加载正确(不是没有)。这里可能发生了什么?
      • 我认为您必须添加对img.load 的调用,因为Image.open 是懒惰的:)。
      猜你喜欢
      • 1970-01-01
      • 2013-01-02
      • 2011-03-22
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多