为什么不透明度为 1% 的绘画并不总是有效?

平面设计 adobe-photoshop 透明度 adobe-photoshop-元素
2022-02-07 04:25:40

我用Adob​​e Photoshop Elements 9试过这个当我有一个黑色背景和一个不透明度为 1% 的白色画笔时,如果我一遍又一遍地点击同一个点,颜色应该会变得更亮。它会这样做,但仅在颜色为#d5d5d5. 无论我多久点击一次具有该颜色(或更亮的颜色)的区域,它都不会变得更亮。这只是一个舍入错误还是有意为之?

限制:

  • Adobe Photoshop Elements 9Photoshop CS2#d5d5d5
  • javascript (processing.js四舍五入到 ~ 1.17%):#d4d4d4
  • GIMP 2.6.11#c0c0c0
2个回答

上限确实是一个舍入问题——这是将像素值存储为 8 位整数的限制。

在 Photoshop CS2 中,为了简单起见,使用十进制值而不是十六进制并查看一个通道:

像素的值似乎由下式给出:

NewValue = RoundToInteger(
    (CurrentValue * (1 - InkOpacity)) + (InkValue * InkOpacity)
    )

当 InkOpacity = 1%,InkValue = 255,

NewValue = RoundToInteger(
    (CurrentValue * 0.99) + 2.55
    )
  • 对于 CurrentValue < 44,这将为您提供每次点击 3 的增量

  • 对于 CurrentValue >= 45 和 < 129,这会给您每次点击增加 2

  • 对于 CurrentValue >= 129 和 < 213,这会给您每次点击增加 1

  • 对于 CurrentValue >= 213,根本没有增量。

请注意,位深度越高,InkValue 也会越大。每次点击的效果仍然会减弱,但天花板会更接近纯白色。

假设相同的公式(我还没有在 Photoshop 中测试过),16 位通道值(InkValue = 65535)最终应该会让你达到 65486/65535,它大于 99.9% 的纯白色。它会带你 703 次点击!

它的目的是数学概念,而不是其他任何东西。想想当你乘以 1% x 1% x 1% 等时,你总是会得到一个无限小的数字。相同的概念可以应用于颜色/不透明度。这意味着会有一个限制,在“颜色”或“十六进制”中,是你的#d5d5d5