以编程方式执行Photoshop的"Luminosity"过滤器

Mat*_*ing 4 php python image image-processing python-imaging-library

我有两个JPEG,并希望将一个叠加在另一个上,其结果与Photoshop(和Fireworks)中提供的"亮度"模式相同.你可以在这里阅读更多关于亮度模式的信息:http://www.adobetutorialz.com/articles/662/1/Photoshop%92s-Luminosity-Mode

我怎样才能做到这一点?编程语言并不重要,但我最熟悉Python和PHP(按此顺序).Python Imaging Library看起来非常合适,但是光度不是内置函数,我不知道正确的程序.见http://effbot.org/imagingbook/imagechops.htm

Coi*_*oin 5

首先,您需要了解Photoshop的功能.

它保留了层下感知颜色信息,并用顶层的感知光度信息替换它的亮度.为此,您需要将图像转换为正确的颜色空间.

以下是您决定自己实施所有内容时需要做的购物清单:

  • 加载源和目标JPEG
  • 将RGB颜色空间中的像素转换为L a b颜色空间(或具有luminosirty信息的任何其他颜色空间)
  • 保留目标颜色通道并根据光源的亮度替换其亮度通道
  • 转换回RGB空间
  • 保存JPEG

如果您认为Lab过于复杂,您也可以使用HSL色彩空间,它会更简单,但会产生较差的结果.