PHP的ImageFilter参数问题(PHP imagefilter parameter ques

2019-11-05 09:49发布

该过滤式参数值IMG_FILTER_CONTRAST什么数值,可以为。

Answer 1:

之间-255255

MG_FILTER_CONTRAST过滤器,可以改变图像的对比度,并且只需一个参数为-255255之间的对比度值。 较低的值增加图片的对比度,实质上降低了颜色的数量,以便他们更独立的和明显的眼球。 使用正值带来的颜色与灰色混合它们紧密联系起来,直到255你有一个完整的灰色画面。

资源



Answer 2:

即使文档指出-255到+255,它不是! 它应该是-100到+100。 但是,有一个更深层次的问题:

PHP不限制到100它通过直通到底层LIB-GD与你指定的任何数目。 LIB-GD也在范围不限制到100,所以无论您使用的数对像素有直接的影响。

在LIB-GD,下面的公式来计算对比度:

(100.0-contrast)/100.0

:你可以在这里看到自己这一点https://bitbucket.org/libgd/gd-libgd/src/cdea9eb0ad01/src/gd_filter.c

这个公式是应该把你所要求的PHP对比度(0到100之间)转换成0和1之间的数字。

问题是,因为范围是永远不会得到确认,但对范围之外号的mathmatically怪异的效果。

如果您在PHP输入90,LIB-GD转换,为0.9,并使用数字应用对比算法。 说得通。 但是 ,如果你输入2000,LIB-GD现在在它的对比算法,这是完全不同的使用-19。

首先,你会注意到的任何值高于100 低于-100有增加 ,因为数学的对比, 同样的效果

为了实现“绝对”的对比效果,即移动的所有像素的图片,以0或255,25600是你想要的号码。 与值127的像素将变成0,并且与值128的像素将变成255。

如果你想使图像完全平坦的颜色(尤其是如果你先申请一个灰阶过滤器,你会得到全黑和白)这可能是有用的。

我不会依赖于这种行为,但因为PHP或LIB-GD可能开始限制新版本的范围内。

所以,在效果:

  • 的范围IMG_FILTER_CONTRAST是-25600到25600
  • 上面和下面的号码也不会拒绝,但不能进一步影响的像素。
  • 低于-100号再次成为积极的,即-100 === +100
  • 随着数字进入成千上万的,因为像素是如此成倍非常接近其最大视觉差异是次要的。


文章来源: PHP imagefilter parameter question