橙澈听雨眠
· 福建这个是真滴🐮🍺
TimFocker
· 上海这个其实不难做到,原理就是用骰子来表现灰度,对应的算法非常简单,将原始图片分成若干个区域,灰度用1-6之间的一个整数表示,代表骰子的一个面。白点越少,表示这个区域越接近全黑;白点越多,表示越接近全白。这样来模拟出灰度。如果区域划分得越小,模拟图的生成效果就越好。其实也不一定是骰子,用魔方也比较合适。for (int i=0; i < (pic_width/16); ++i) { for (int j=0; j < (pic_height/16); ++j) { patch = cropped_img.get(i*16, j*16, 16, 16); } }for (int k=0; k < patch.pixels.length; ++k) { x[k] = rgb2gray(patch.pixels[k]); } int rgb2gray(int argb) { int _alpha = (argb >> 24) & 0xFF; int _red = (argb >> 16) & 0xFF; int _green = (argb >> 8 ) & 0xFF; int _blue = (argb) & 0xFF; return int(0.3*_red + 0.59*_green + 0.11*_blue); }int dice_num = six_step_gray(mean(x)); int mean(int[] x) { float m = 0; for (int i=0; i < x.length; ++i) { m += x[i]; } m = m/x.length; return int(m); } int six_step_gray(int x) { if (0 <= x && x <= 41) return 1; if (41 < x && x <= 83) return 2; if (83 < x && x <= 124) return 3; if (124 < x && x <= 165) return 4; if (165 < x && x <= 206) return 5; if (206 < x && x <= 247) return 6; else return 6; }用Photoshop也可以得到类似效果。电脑生成图片后,可以手动对应摆上骰子,这才是工作量大的地方。10000个骰子得拼20个小时吧,建议大家可以拼拼16*16http://www.ruanyifeng.com/blog/2011/11/dice_portrait.html