美文网首页
如何制作带有透明度的图片

如何制作带有透明度的图片

作者: 饭桶2018 | 来源:发表于2019-05-06 21:04 被阅读0次

首先理解图片的构成

一张图片可以理解为由 m x n 个像素组成的。
一个像素又有很多种表现形式。

比如:

  • RGB
  • RGB + Alpha
  • GRAY
  • 其他

RGB

每一个像素由 24 位组成,
用10进制表示 [255(R) 255(G) 255(B)] (白色)
一张 mxn 的图片就是一个 3维数组 
[
    [[255 255 255] [255 255 255] ... ... ... n列]
    [[255 255 255] [255 255 255] ... ... ... ...]
    ... ... ...
    m 行
]

RGB + Alpha

Alpha 通道即图片透明度。

一张 mxn 的图片也是一个 3维数组
第3维多了一个alpha 通道, 1(255)不透明,0(0)全透明
[
    [[255 255 255 255] [255 255 255 255] ... ... ... n列]
    [[255 255 255 255] [255 255 255 255] ... ... ... ...]
    ... ... ...
    m 行
]

GRAY

灰度图每一个像素 8 位
一张 mxn 的图片是一个 2 维数组
[
    [255 255 255 ... ... ... n列] 
    [255 255 255 ... ... ... ...]
    ... ... ...
    m 行
]

制作透明图片

基于以上原理,我们可以制作透明图片

import numpy as np
import cv2
# 带alpha通道读入原始图片
img = cv2.imread('alpha.png', cv2.IMREAD_UNCHANGED)
# 将黑色不透明的像素改成黑色透明
img[np.all(img == [0,0,0,255],axis=2)] = [0,0,0,0]
# 保存
cv2.imwrite('transparent.png',img)
原始图片.PNG 黑色背景透明.png 灰度图.png

相关文章

网友评论

      本文标题:如何制作带有透明度的图片

      本文链接:https://www.haomeiwen.com/subject/qsfjoqtx.html