В настоящее время я пытаюсь воспроизвести фильтр css «hue-rotate», который производит то же самое, что и svg feColorMatrix «hueRotate» в браузерах на сервере. Я посмотрел на спецификацию, реализацию firefox и реализацию webkit. Я портировал каждый алгоритм на ruby, но результаты все равно отличаются от того, что я вижу в своих браузерах.
Я собрал немного jsfiddle, чтобы увидеть различия для примера изображения.
<body>
<p>Original image:</p>
<div class="image"></div>
<p>Browser filtered image: (<- I need this generated on the server!</p>
<div class="image hue-90" ></div>
<p>Webkit/spec algorithm image:</p>
<div class="webkit-algorithm-result"></div>
</body>
А вот простой ruby-код для преобразования изображения.
Вопрос в том, что является секретным ингредиентом? Почему результирующее изображение все еще отличается?
PS: Несмотря на то, что алгоритмы firefox и webkit немного отличаются, результат одинаков. Я пробовал image magick и gimp, которые дают одинаковые результаты, но опять же отличаются от результатов браузера И отличаются от предполагаемых алгоритмов выше. У Phantomjs есть и другие ошибки.