当我使用imagetruecolortopalette()时,为什么我的颜色会改变?

时间:2012-06-10 18:41:23

标签: php colors imagemagick gd closest

我有一个4x4像素的图像,每个像素都有我想要的确切颜色,例如#439902等,

我抓住我的图像使用gd的imagetruecolortopalette()函数将其转换为调色板,然后我尝试使用imagecolorclosest()函数找到我的图像中最接近另一种预定颜色的颜色,问题是它带来了完全不同的颜色,一个不在我的4x4图像中,颜色接近我的一种颜色,但我需要它。

我认为问题在于,当我使用imagetruecolortopalette()功能时,我的4x4图像中的所有颜色都会略有变化,

有没有解决这个问题的方法。

作为一个例子......

如果我搜索(66,100,39)我最接近的比赛是:(76,90,56)。

76,60,56已改变,因为原始图像中的颜色为(78,98,43)。 我知道它不远,但我需要它保持不变

2 个答案:

答案 0 :(得分:0)

如果你保存为jpg,那可能是压缩问题;尝试保存为png,因为它不压缩,并且比jpg有更多的颜色。

从IM论坛取消了一些代码:

exec("convert square.png[1x1+0+0] -format " .
     "\"%[fx:floor(255*u.r)],%[fx:floor(255*u.g)],%[fx:floor(255*u.b)]\" " .
     "info: 2>&1",$result);
      print_r($result);

我认为这里的方法是错误的,因为这会识别颜色而不是你想要的颜色?

答案 1 :(得分:0)

但是php已经有了这个功能:

imagecolorexact