【问题标题】:How to determine if a png picture has a transparency layer in PythonPython中如何判断一张png图片是否有透明层
【发布时间】:2018-12-27 07:17:35
【问题描述】:

我主要使用 Pillow 库,但我可以使用其他东西。 我可以提取包含 alpha 的颜色层。 我想知道是否有一种方法可以快速定义图片是否使用透明度。

pic = Image.open(path)
red, green, blue, alpha = pic.split()

有没有办法查看 alpha 是否真的被使用或仅可用,因为格式支持它(例如:PNG)

【问题讨论】:

标签: python image pillow


【解决方案1】:

我不知道 Pillow,但您可以使用 numpymatplotlib.pyplot 加载和检查图像。这些是非常普遍的 Python 库。

您可以将图像加载到numpy 数组中并检查最后一个轴的长度。如果是3,则没有 Alpha 通道。如果是4,则存在 Alpha 通道。

import matplotlib.pyplot as plt
pic = plt.imread(path)

if pic.shape[2] == 3:
    print("No alpha channel!")
if pic.shape[2] == 4:
    print("There's an alpha channel!")

如果您想知道该频道是否实际被使用(如果存在),您可以检查它是否到处都是1

import numpy as np
if np.allclose(pic[:, :, 3], 1):
    print("Alpha not used because 1 everywhere!")

【讨论】:

  • 在这种情况下,使用来自@mingganz 的链接留在 Pillow 中可能会更好。但无论如何,不​​妨看看将 PNG 用作 numpy 数组,它非常灵活且功能强大。
猜你喜欢
  • 2015-09-25
  • 1970-01-01
  • 2021-08-07
  • 2016-07-04
  • 2013-11-22
  • 2021-05-27
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
相关资源
最近更新 更多