2014-11-25 4 views
0

Из CamanJS дал следующий фильтр:Как преобразовать фильтр CamanJS в фильтр KineticJS?

Caman.Filter.register("lomo", function(vignette) { 
    if (vignette == null) { 
     vignette = true; 
    } 
    this.brightness(15); 
    this.exposure(15); 
    this.curves('rgb', [0, 0], [200, 0], [155, 255], [255, 255]); 
    this.saturation(-20); 
    this.gamma(1.8); 
    if (vignette) { 
     this.vignette("50%", 60); 
    } 
    return this.brightness(5); 
    }); 

Как я могу преобразовать этот фильтр в KineticJS эквивалент?

ответ

1

Фильтры CamanJS и KineticJS выполнены по-разному.

Фильтры KineticJS манипулируют пиксельными данными за один проход.

В CamanJS используются подсистемы, которые изменяют изображение постепенно (подсистемы == this.brightness, this.exposure и т. Д.).

Таким образом, не существует простой способ, чтобы преобразовать CamanJS фильтр в KineticJS фильтр

Для этого вам придется реорганизовать и внедрить множество CamanJS подсистем в KineticJS.

Вы можете сделать это, так как CamanJS и KineticJS открытым исходным кодом с либеральным лицензированием, но это означало бы, рефакторинг и добавление по крайней мере, следующие подсистемы (и их зависимостей) в KineticJS из CamanJSs: https://github.com/meltingice/CamanJS/blob/master/dist/caman.full.js

  • яркость ,
  • экспозиции,
  • кривые,
  • насыщения,
  • гамма

Возможно, лучше было бы применить фильтр, используя CamanJS на холсте в памяти. Затем вы можете использовать этот холст в памяти как источник изображения для Kinetic.Image. Вот ссылка на то, как это сделать: KineticJS canvas modified by CamanJS

+0

Я не могу использовать CamanJS для изменения холста, потому что работаю на мобильных устройствах. На мобильном CamanJS очень медленно, и я бы сказал, непригодным для использования. – confile

+0

Достаточно честный, тогда вы, безусловно, можете вытащить необходимые кишки из CamanJS для использования в KineticJS. Не зная, я подозреваю, что прирост производительности будет относительно небольшим по сравнению с фактическим использованием CamanJS, потому что вы делаете несколько проходов в матрице пикселей. Лучше всего было бы объединить всю обработку подсистемы CamanJS в один проход. Таким образом, ваш ломо объединил бы манипуляции с пикселями, выполненные с помощью яркости, экспозиции, кривых, насыщенности и гамма-подсистемы CamanJS, в единую модификацию матрицы пикселей. Удачи с вашим проектом! – markE

+0

Как я могу объединить все эти вещи в один проход? – confile

Смежные вопросы