对于filtertype参数值IMG_FILTER_CONTRAST,它的取值范围是多少。
发布于 2013-08-17 00:28:14
尽管文档中规定了-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之间的数字。
问题是,因为这个范围从未被检查过,所以它对这个范围之外的数字有一个数学上奇怪的效果。
如果在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不会被拒绝,但不会影响-100以下的像素再次变为正数,即-100 === +100发布于 2011-03-22 18:54:25
在-255和255之间
MG_FILTER_CONTRAST filter允许您更改图像的对比度,并且只采用一个参数作为-255和255之间的对比度值。较低的值增加了图片的对比度,本质上减少了颜色的数量,因此它们对眼睛来说更加独立和明显。使用正值可以通过将颜色与灰色混合来使颜色更紧密地结合在一起,直到值为255时,您才能获得全灰色图片。
Source
https://stackoverflow.com/questions/5390053
复制相似问题