如何在Ruby中按颜色分类,如Dribbble?

时间:2015-10-20 16:20:46

标签: ruby image-processing

Dribble有一个很棒的功能,可以让你以类似的颜色浏览镜头:
Note the color droplets on the right side of the image

在Ruby中生成类似内容的最简单方法是什么?是否有可以管理此类处理的库或服务?我目前有26k图像,我需要处理,我正在评估最好的方法。

2 个答案:

答案 0 :(得分:1)

这很可能在某种程度上依赖于**using (var dbCtx = new TLMDbContext()) { var dvps = dbCtx.tblDVPTests.Where(x => x.DVPID == 2176); // these 2 following if conditions doesnt bring correct result sets if (dvpMasterPhaseId.HasValue) { dvps = dvps.Where(x => x.tblDVPPhases.All(p => p.DVPMasterPhaseID ==255)); } if (dvpMasterVariantId.HasValue) { dvps = dvps.Where(x => x.tblDVPPhases.All(p => p.tblDVPVariants.All(v=>v.DVPMasterVariantID==681))); } }** 实用程序。快速搜索可用的库,可以在这里找到Miro gem:https://github.com/jonbuda/miro

答案 1 :(得分:1)

不确定您需要帮助的问题的哪个方面 - 生成颜色样本或按类似颜色排序。无论如何,这里是你如何使用ImageMagick生成6种最佳颜色来表示图像,并将其制作成合理尺寸的色样:

convert input.png -colors 6 -unique-colors -scale 5000% swatch.png

enter image description here

如果您希望将颜色设置为RGB三元组,只需将命令更改为:

convert input.png -colors 6 -unique-colors +matte -colorspace RGB  txt:

# ImageMagick pixel enumeration: 6,1,255,rgb
0,0: (1623,1472,1531)  #060606  rgb(6,6,6)
1,0: (10693,4106,4231)  #2A1010  rgb(42,16,16)
2,0: (23082,8867,9471)  #5A2325  rgb(90,35,37)
3,0: (8667,28247,37488)  #226E92  rgb(34,110,146)
4,0: (40714,34524,37545)  #9E8692  rgb(158,134,146)
5,0: (59611,58620,58816)  #E8E4E5  rgb(232,228,229)

如果你想在两种颜色之间找到距离,例如上面列出的第一种和最后一种颜色,您可以使用:

compare -metric RMSE xc:"rgb(232,228,229)" xc:"rgb(6,6,6)" null:
57484 (0.87715)

括号中的数字表示RGB颜色立方体中的颜色距离是黑色和白色之间距离的87% - 即,将颜色立方体的对角线标准化为100%。由于第一个数字接近黑色,即rgb(0,0,0),第二个数字接近白色,即rgb(255,255,255),颜色之间的距离为87%。

ImageMagick有一些Ruby绑定 - herehere