寻找答案 2 周。我有一个工具,可以直接在Web浏览器中调整图像的对比度和亮度,并使用CSS3属性来显示结果。但是我也应该将这些修改应用于服务器端的原始JPG,并将其输出回用户。
我该怎么做?我正在使用PHP + Imagemagick,但找不到进行此转换的方法。请帮助我。
我发现了ImageMagick的一个很棒的功能,它允许我们在亮度和对比度方面做任何事情。它是"-级"。
但它不允许直接应用 CSS3 亮度和对比度值。因此,我进行了很好的调查并计算了特殊公式,以将CSS亮度和对比度值转移到"-level"选项的"黑点"和"白点"参数。请查看此页面(对不起,俄语,但您可以使用谷歌翻译)。如果您不想阅读所有这些方程式,请滚动到页面底部。
CSS3 brightness
滤镜只是将颜色值乘以给定的常量。1][2] 要使用 Imagemagick 实现相同的效果,请使用 -evaluate Multiply
[3]。或者,-function Polynomial
[4] 可用于相同的效果。其他特征,如-level
[5][6]和-brightness-contrast
[7][8]不太合适,因为它们将颜色乘以给定常数的倒数。
CSS 属性filter: brightness(80%)
对应于 Imagemagick 选项-evaluate Multiply .8
。
CSS 属性filter: brightness(120%)
对应于 Imagemagick 选项-evaluate Multiply 1.2
。
在PHP中设置Imagemagick的选项(或从PHP迁移到更好的东西)对读者来说是一个练习。
您需要传输客户端亮度设置,然后将其应用于原始 JPG
bool Imagick::modulateImage ( float $brightness , float $saturation , float $hue )
功能。更多这个