寻找2周的答案。我有一个工具,可以直接在Web浏览器中调整图像的对比度和亮度,并使用CSS3属性来显示结果。但是我也应该在服务器端将这些修改应用于原始JPG并将其输出回用户。
我该怎么办?我正在使用PHP + Imagemagick,但无法找到进行此转换的方法。请帮帮我。
答案 0 :(得分:0)
我发现了ImageMagick的一个很棒的功能,它允许我们对亮度和对比度做任何事情。这是“级别”。
但它不允许直接应用CSS3亮度和对比度值。因此,我做了一个很好的调查并计算特殊公式,将CSS亮度和对比度值转换为“-level”选项的“黑点”和“白点”参数。请检查this page(抱歉,俄语,但您可以使用谷歌翻译)。如果您不想阅读所有这些等式,请滚到页面底部。
答案 1 :(得分:0)
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迁移到更好的东西)是读者的练习。
答案 2 :(得分:-1)
您需要传输客户端亮度设置,然后使用
将它们应用到原始JPGbool Imagick::modulateImage ( float $brightness , float $saturation , float $hue )
功能。更多this