Imagemagick 用灰度图像遮罩alpha通道
我一直在尝试用ImageMagick做一些看似琐碎的事情,但我做得不对 我有一个透明的PNG(32位),我想用灰度图像(也是32位)遮罩它。文件为32位的原因是,它们是使用默认输出32位的GIS工具生成的。我宁愿不改变,因为我的所有文件都已经生成了 无论如何-这就是我现在用来做的:Imagemagick 用灰度图像遮罩alpha通道,imagemagick,Imagemagick,我一直在尝试用ImageMagick做一些看似琐碎的事情,但我做得不对 我有一个透明的PNG(32位),我想用灰度图像(也是32位)遮罩它。文件为32位的原因是,它们是使用默认输出32位的GIS工具生成的。我宁愿不改变,因为我的所有文件都已经生成了 无论如何-这就是我现在用来做的: convert \ alpha_channel.png \ \( \ mask.png \
convert \
alpha_channel.png \
\( \
mask.png \
-colorspace gray \
-alpha off \
\) \
-compose copy-opacity \
-composite \
PNG32:output.png
结果几乎是正确的,但我认为钻头深度存在一些问题。这很难解释,但通过查看文件并将“output.png”与“expected_output.png”进行比较,您可以很容易地看到它
以下是我正在处理的文件:
您认为我做错了什么?在我看来,所有信息都在文件alpha通道的alpha通道中,但您使用的是该文件的两级灰度值,而不是包含任何内容的实际信息
Image: alpha_channel.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 4096x4096+0+0
Units: Undefined
Type: Bilevel
Base type: Bilevel
Endianess: Undefined
Colorspace: Gray
Depth: 8-bit
Channel depth:
gray: 1-bit
alpha: 8-bit
Channel statistics:
Pixels: 16777216
Gray:
min: 0 (0)
max: 255 (1)
mean: 228.324 (0.89539)
standard deviation: 78.0429 (0.30605)
kurtosis: 4.67613
skewness: -2.58382
mean: 41.3934 (0.162327)
standard deviation: 22.3399 (0.0876074)
kurtosis: -0.402954
skewness: 0.327285
Alpha: graya(0,0) #00000000
Colors: 118
Histogram:
1755067: ( 0, 0, 0, 0) #00000000 graya(0,0)
478353: (255,255,255, 37) #FFFFFF25 graya(255,0.145098)
378182: (255,255,255, 51) #FFFFFF33 graya(255,0.2)
374922: (255,255,255, 47) #FFFFFF2F graya(255,0.184314)
368496: (255,255,255, 39) #FFFFFF27 graya(255,0.152941)
362982: (255,255,255, 49) #FFFFFF31 graya(255,0.192157)
您还试图放弃文件mask.png
的alpha通道,因为它没有alpha通道,所以它似乎也不正确。所以,我不知道你的信息到底在哪里,或者更确切地说,你到底想提取什么。我只能提出以下建议,这些建议似乎提取了我认为你可能想要的东西,但与你期望的完全不同。不过,它可能会帮助你进一步
convert alpha_channel.png -alpha extract \
\( mask.png -colorspace gray \) \
-compose copy-opacity -composite out.png
您的
convert-version
命令的输出是什么?您好。我现在不在我的工作站测试它,但我已经安装了最新的Windows二进制文件。6.9我相信。谢谢。当谈到ImageMagick时,你暴露了我的无知:)我不确定我的命令在做什么,但在长时间的Google会话后,它看起来可以做我想做的事情,但显然没有。看起来我没有很好地解释最终结果,所以让我在这里尝试一下……结果图像将在Unity3D中用于置换着色器。由于技术原因,图像不能像alpha_channel.png那样只是灰度图像,它必须具有透明度,并且工作正常。我还需要用mask.png屏蔽它,同时保持透明度。这更清楚吗?您可以打开expected_output.png以查看所需结果。我在photoshop中使用mask.png作为alpha_channel.png.Mmm上的层掩码创建了该图像,我根本看不到你做了什么!!!我在Photoshop中打开alpha_通道并添加了掩码作为掩码,它看起来与您预期的输出不一样。然后,我将您的预期输出叠加在顶部,并选择了差异
混合模式,如果没有差异,但差异巨大,则该模式应为黑色。你在Photoshop中还做了一些其他的步骤吗?这是我的Photoshop文件:当我试图像你一样用expected_output.png覆盖它时,我也注意到了差异。我认为这是因为压缩或其他原因。我已经找到了一个不错的解决方案,尽管这是一个两步的过程。我认为这可以一步完成convert mask.png-背景红色-否定-alpha形状mask_shape.png
convert alpha_channel.png mask_shape.png-compose DstOut-composite output.png
也许你可以从这两个步骤中看出我想要做什么。