服务器端的CSS亮度/对比度

时间:2014-01-09 19:08:39

标签: php css image graphics imagemagick

寻找2周的答案。我有一个工具,可以直接在Web浏览器中调整图像的对比度和亮度,并使用CSS3属性来显示结果。但是我也应该在服务器端将这些修改应用于原始JPG并将其输出回用户。

我该怎么办?我正在使用PHP + Imagemagick,但无法找到进行此转换的方法。请帮帮我。

3 个答案:

答案 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)

您需要传输客户端亮度设置,然后使用

将它们应用到原始JPG
bool Imagick::modulateImage ( float $brightness , float $saturation , float $hue )

功能。更多this