PIL加载一个透明的PNG作为RGB?

2024-06-17 12:44:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用PIL合成一些航空图像,但遇到了一些麻烦。我使用PIL加载this image和以下代码:

composite = Image.new('RGBA', (256, 256))
url = 'http://...'
resp = requests.get(url)
content = StringIO(resp.content)
image = Image.open(content)
composite.paste(image, (0, 0), image)

当我调用composite.paste()时,PIL给出错误“ValueError:bad transparency mask”。当我打印image.mode时,果然是RGB,而不是预期的{}(这是paste()需要的)。在

我下载的PNG上的alpha频道在哪里?在


Tags: 代码图像imageurl航空newpilcontent
2条回答

以下代码适用于我:

from PIL import Image
import requests
import StringIO

url = "https://gis.apfo.usda.gov/arcgis/rest/services/NAIP/Tennessee_2016_60cm/ImageServer/exportImage?bbox=-87.1875,34.3071438563,-84.375,36.5978891331&bboxSR=4326&size=256,256&imageSR=102113&transparent=true&format=png&f=image"
resp = requests.get(url)
content = StringIO.StringIO(resp.content)
image = Image.open(content)
image = image.convert('RGBA')
composite = Image.new("RGBA", image.size, (255,255,255,0))
composite.paste(image )

据我所见,图像是RGBA。看看结果

$ convert exportImage.png -verbose info

Image: exportImage.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 256x256+0+0
  Units: Undefined
  Type: TrueColorAlpha
  Endianess: Undefined
  Colorspace: sRGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
    alpha: 1-bit

Channel statistics:
    Pixels: 65536
    Red:
      min: 39 (0.152941)
      max: 253 (0.992157)
      mean: 133.019 (0.521641)
      standard deviation: 75.3931 (0.295659)
      kurtosis: -1.05835
      skewness: 0.86831
    Green:
      min: 59 (0.231373)
      max: 253 (0.992157)
      mean: 152.489 (0.597998)
      standard deviation: 62.9948 (0.247038)
      kurtosis: -1.03932
      skewness: 0.87929
    Blue:
      min: 39 (0.152941)
      max: 253 (0.992157)
      mean: 135.817 (0.532617)
      standard deviation: 72.8752 (0.285785)
      kurtosis: -1.01856
      skewness: 0.929917
    Alpha:
      min: 0 (0)
      max: 255 (1)
      mean: 185.273 (0.726562)
      standard deviation: 113.659 (0.445723)
      kurtosis: -0.966513
      skewness: 1.01661
  Image statistics:
    Overall:
      min: 0 (0)
      max: 255 (1)
      mean: 122.763 (0.481424)
      standard deviation: 83.4891 (0.327408)
      kurtosis: -0.482848
      skewness: 0.432253
  Alpha: srgba(253,253,253,0)   #FDFDFD00      > (1)

等等。在

现在,让我们使用PIL和python3加载图像:

^{pr2}$

这是因为上面的图像统计中的eqn(1),我们在制作新图像时也必须给出0。在

相关问题 更多 >