仅从红色通道中减去一个值

Subtract a value from the Red channel only

有什么简单的方法可以从红色通道中减去一个值吗?例如,假设一个像素具有 RGB(140、30、50),我希望仅从红色通道中减去 100,从而得到 RGB(40、30、50)。我知道图像的发红度超过 100,所以达到零应该没有任何问题。

我对 Gimp 不熟悉,虽然我认为它也应该是可能的。或者是否有一个简单的 ImageMagick 命令可以完成这项工作?

在 Imagemagick 中,您需要使用量程范围内的值(默认为 16 位,即 0 到 65535)或百分比。减去 100 是 100*100/255 = 39.2%,所以在 Imagemagick 6

convert image -channel r -evaluate subtract 39.2% +channel newimage


例如,我创建了一个全红色图像 (r=255):

convert -size 1x1 xc:"srgb(255,0,0)" red.png

convert red.png -channel r -evaluate subtract 39.2% +channel red2.png

convert red2.png -format "%[fx:floor(255*u.r)]" info:
155

255-100=155; So we got the correct result above.


在 Imagemagick 7 中,你可以做

magick image -channel r -evaluate subtract "%[fx:100*100/255]"% +channel newimage

在 Gimp 中,两种方法:

方法一

  • 在上面添加一层,
  • 用深红色 (RGB(100,0,0)) 填充
  • 将其置于 Subtract 混合模式。

方法二

  • 设置前景色为RGB(100,0,0)
  • 将填桶工具模式设置为Subtract
  • 桶填充图层