【问题标题】:Imagick tintImage colors aren't consistentImagick tintImage 颜色不一致
【发布时间】:2018-03-22 12:35:47
【问题描述】:

我在使用 PHP 的 Imagick 的 tintImage 函数时遇到了颜色问题。在我的本地开发环境中,一切看起来都很好,但在生产环境中,颜色已关闭。

在下面的每个示例中,我将显示我正在使用的值,然后是左侧的原始图像,中间是开发环境生成的“正确”版本,以及生成的“错误”版本通过右侧的生产环境。

示例:

$image->tintImage("rgb(57, 32, 109)", "rgb(128, 128, 128, 0.9)");

$image->tintImage("rgb(142, 43, 98"), "rgb(128, 128, 128, 0.9)");

$image->tintImage("rgb(218, 21, 2)", "rgb(128, 128, 128, 0.9)");

$image->tintImage("rgb(171, 25, 158)", "rgb(128, 128, 128, 0.9)");

我不知道为什么会这样。驱动应用程序的 PHP 代码在 dev 和 prod 环境中是相同的。我将如何诊断这个问题?

【问题讨论】:

  • 您使用的是哪个版本的 Imagick?在 3.4.0RC3 之前,色调几乎被分解了
  • 啊,大概就是这样 -- prod 上是 3.2.0~rc1-1,dev 上是 3.4.3~rc2-2

标签: php image-processing colors imagick


【解决方案1】:

颜色空间的假设在未指定时会在某些时候发生变化。

如果未指定,较新版本假定为sRGB。因此,如果新版本的结果看起来正确,请在打开图像后立即设置sRGB colourspace 以使旧版本的工作方式相同。

相反,如果旧版本的结果看起来正确,请在打开后立即设置RGB colourspace 以使新版本像旧版本一样工作。

【讨论】:

  • 感谢您的建议!加载图层后,我立即尝试了$image->setColorspace(_)$image->transformImageColorspace(_),分别尝试了Imagick::COLORSPACE_RGBImagick::COLORSPACE_SRGB(我分别尝试了它们,而不是同时尝试)。唯一在 prod 服务器上产生明显差异的是将色彩空间转换为 RGB,这使得“错误”更加明显:上面的示例 3 变为 imgur.com/lDDTKJm.png
  • 这里似乎不仅仅是色彩空间:在开发服务器上,将色彩空间转换为 RGB 并且执行着色会产生与产品服务器相同的图像在执行色调但执行色彩空间变换时。这似乎表明,无论颜色配置文件是否错误,色彩本身都不会在产品上发生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 2022-10-15
相关资源
最近更新 更多