【问题标题】:How to merge Alpha mask and RGB image如何合并 Alpha 蒙版和 RGB 图像
【发布时间】:2021-08-24 09:19:22
【问题描述】:

我有两个图像。 一个是 RGB 文件,另一个是 Alpha 通道文件。

from PIL import Image
 
name = 'char_101_sora_2'
 
image = name+'.png'
mask = name+'[alpha].png'
 
img = Image.open(image)
mas = Image.open(mask)
 
pixdata_img = img.load()
pixdata_mas = mas.load()
 
for y in range(mas.size[1]):
    for x in range(mas.size[0]):
        pixdata_img[x, y] = (pixdata_img[x, y][0], pixdata_img[x, y][1], pixdata_img[x, y][2], pixdata_mas[x, y][2])
 

此代码是 Python 来执行此操作的。 但是我看不懂,谁能解释一下或者改写成Java?

【问题讨论】:

  • @HaraldK 事实上,我可以做到。这个问题到此结束。这也是我的谋生之道,但我可以免费提供。

标签: java python image alpha


【解决方案1】:
        for (int h = 0; h < image.getHeight(); h++) {
            for (int w = 0; w < image.getWidth(); w++) {
                skadi.setRGB(w, h,
                        (((alpha.getRGB(w, h)) & 0xFF) << 24) |
                                (((image.getRGB(w, h) >> 16) & 0xFF) << 16) |
                                ((((image.getRGB(w, h) >> 8) & 0xFF) << 8) |
                                        (image.getRGB(w, h) & 0xFF)));
            }
        }

这里是这个问题的简单解决方案。
也在这里:Merge Alpha Mask and RGB Image with Java

【讨论】:

  • 使用image.getRGB(w, h) &amp; 0xFFFFFF 可能会更快,并跳过所有移位(一次复制所有RGB)。你使用alpha图像中的B(lue)通道也很好奇,但我认为它与Python代码一致。 ?
猜你喜欢
  • 1970-01-01
  • 2023-02-18
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
相关资源
最近更新 更多