Повторное использование цветовой матрицы от WebGL - PullRequest
0 голосов
/ 22 января 2020

Я испытываю довольно странную и нюансированную проблему, надеясь, что кто-то с большим опытом может помочь определить проблему. У меня есть набор цветовых матриц, которые я использую для изменения изображений в Canvas, а затем пытаюсь объединить изображение на сервере с Go lang.

Я использую fabri c. js для отображения изменений цветового фильтра на изображение с этим: http://fabricjs.com/docs/fabric.Image.filters.ColorMatrix.html. Вот пример фильтра сепии в Fabri c:

var filter = new fabric.Image.filters.ColorMatrix({
 matrix: [0.35, 0.35, 0.35, 0.2, 0,
          0.30, 0.30, 0.30, 0.1, 0,
          0.25, 0.25, 0.25, 0.1, 0,
          0, 0, 0, 1, 0,
          0, 0, 0, 0, 1]
});
object.filters.push(filter);
object.applyFilters();

, который выглядит так:

enter image description here

In Go через веб-сервис Я написал что-то в композит на основе той же цветовой матрицы. Для этого я использую библиотеку Disintegration Gift. Вот факторизованный код:

filter := gift.ColorFunc(
    func(r0, g0, b0, a0 float32) (r, g, b, a float32) {
        m := req.FilterMatrix
        r = (m[0] * r0) + (m[1] * g0) + (m[2] * b0) + (m[3] * a0) + m[4]
        g = (m[5] * r0) + (m[6] * g0) + (m[7] * b0) + (m[8] * a0) + m[9]
        b = (m[10] * r0) + (m[11] * g0) + (m[12] * b0) + (m[13] * a0) + m[14]
        a = (m[15] * r0) + (m[16] * g0) + (m[17] * b0) + (m[18] * a0) + m[19]
        return
    },
)
g := gift.New(filter)
dst := image.NewNRGBA(g.Bounds(orgImg.Bounds()))
g.Draw(dst, orgImg)
orgImg = dst

Он в основном берет FilterMatrix из веб-запроса и соответственно применяет изменения цвета. Для этого фильтра сепия он работает как шарм. У меня есть несколько других матриц, которые не очень хорошо работают. Например, эта матрица: [1.1, 0, 0, 0, -30, 0, 1, 0, 0, 10, 0, 0, 1, 0, -10,0, 0, 0, 1, 0, 0, 0, 0, 0, 1], которая в Fabri c производит:

enter image description here

Когда я рендерим ее на сервер, изображение solid зеленого цвета. Моя логика / структура выглядит хорошо, я не уверен, что может быть не так.

...