summaryrefslogtreecommitdiff
path: root/client/effects.js
diff options
context:
space:
mode:
authorYuval Adam <yuval@y3xz.com>2015-06-29 18:01:36 +0300
committerYuval Adam <yuval@y3xz.com>2015-06-29 18:01:36 +0300
commit8256cec8e339f3341571049f5a05e41ab85fad1b (patch)
tree904fc1b81ec23e54bf86604eb6852461ae2a1275 /client/effects.js
parentba4f31524941937277a9a19dde05257c88e15658 (diff)
Apply kmeans to color averaging
Diffstat (limited to 'client/effects.js')
-rw-r--r--client/effects.js45
1 files changed, 21 insertions, 24 deletions
diff --git a/client/effects.js b/client/effects.js
index 1135e04..a020a4e 100644
--- a/client/effects.js
+++ b/client/effects.js
@@ -91,36 +91,33 @@ Effects = (function() {
}
function average() {
- var canvas = document.getElementById('canvas-all');
- var p = new paper.PaperScope();
- p.setup(canvas);
-
- var i = 0;
- var photos = $('.instagram-photo');
- canvas.width = 150;
- canvas.style.width = 150;
+ var all_colors = _.flatten(
+ _.union(
+ _.map(
+ Session.get('photos'), function (x) {
+ return Session.get(x.id + ':colors');
+ }
+ )
+ ), true // shallow
+ )
- _.each(photos, function(x) {
- var raster = new paper.Raster(x);
- raster.position = new paper.Size(75, 75);
- raster.opacity = 1 / photos.length;
- })
+ var k = new KMeans();
+ k.cluster(all_colors, 2);
+ var centroids = k.centroids;
- p.view.draw();
-
- var quant = new RgbQuant({
- colors: 2,
- minHueCols: 16
- });
- quant.sample(canvas);
- var g_palette = quant.palette(true);
- var g_p1 = new paper.Color(g_palette[0][0] / 256, g_palette[0][1] / 256, g_palette[0][2] / 256);
- var g_p2 = new paper.Color(g_palette[1][0] / 256, g_palette[1][1] / 256, g_palette[1][2] / 256);
+ var g_p1 = new paper.Color(centroids[0][0] / 256, centroids[0][1] / 256, centroids[0][2] / 256);
+ var g_p2 = new paper.Color(centroids[1][0] / 256, centroids[1][1] / 256, centroids[1][2] / 256);
Session.set('g_p1', g_p1);
Session.set('g_p2', g_p2);
- return g_palette;
+ centroids = _.map(centroids, function(c) {
+ return _.map(c, function(cc) {
+ return Math.round(cc);
+ })
+ });
+
+ return centroids;
}
function averageColor(id) {