用MineCraft作画(个人制作)
上传者:孙丽华|上传时间:2016-09-29|密次下载
用MineCraft作画(个人制作)
作者:猫在乎
之前在各种地方也见过用MC作画,感觉非常amazing。如下:
所以自己也试想了一下,如果让我来制作这样一幅画,我会怎么去做呢。
1.首先需要一份素材。(废话)
2.将其像素化
由于素材通常尺寸较大(1000*1000)在拼图过程中肯定不现实,所以我们要将其像素化,简而言之就是将1000*1000的图缩小成100*100或者其他尺寸,这样就有一种像素风的感觉,方便我们之后的操作,例如:
由于图是我自己截的,所以像素可能有些不对。这里将一幅618*613的dodge压缩成了45*45。原先设想这个功能还要自己写的,后来发现了Python DIL库中的thumbnail函数,非常方便,代码我会贴在最后。
3.将每个像素块与minecraft当中的每个块对应起来。
简单解释一下,假如拿到我们这幅像素dodge,我们直接进入minecraft施工,会陷入这样一种情况:对每个像素点我们需要比对颜色最接近的MC块,会消耗大量的精力和时间,而且效果取决于人的肉眼,可以说非常不靠谱。但我在网上并没有找到MC块的色彩值(因为针对不同的材质,颜色完全不一样!)所以我用了一个笨办法,实现了这个对应过程。
3.1获取像素图每个块的色彩
这个比较简单,使用库函数就行了。代码见最后。
3.2获取MC当中各个块的色彩
使用了一个笨办法,我挑选了16种颜色*3种材质,放在地上等到中午,然后截图。使用画图工具挨个取色。
十六种颜色分别是(从右至左):品红、红、粉红、紫、蓝、淡蓝、青、绿、绿黄、黄、橙、棕、黑、灰、淡灰、白
三种材质分别是(从上至下):羊毛、玻璃(由于材质包,这里的玻璃不透明)、粘土
也就是说,我们使用48色来仿真原图!放出截图:
采用高空俯瞰的方式是因为保证最后成品的最佳效果。(因为也是从高空俯瞰的)
采到的数据如下:(真心累)
colors = {
"品红羊毛":(209,95,220),
"品红玻璃":(203,116,225),
"品红粘土":(187,129,156),
"红羊毛":(184,75,85),
"红玻璃":(184,88,97),
"红粘土":(180,95,93),
"粉红羊毛":(217,159,185),
"粉红玻璃":(231,169,199),
"粉红粘土":(195,117,120),
"紫羊毛":(167,84,216),
"紫玻璃":(164,103,204),
"紫粘土":(156,108,133),
"蓝羊毛":(62,84,188),
"蓝玻璃":(81,116,204),
"蓝粘土":(110,98,139),
"淡蓝羊毛":(127,169,222),
"淡蓝玻璃":(139,186,222),
"淡蓝粘土":(154,151,180),
"青羊毛":(63,153,184),
"青玻璃":(111,166,188),
"青粘土":(127,133,140),
"绿羊毛":(77,107,72),
"绿玻璃":(140,166,96),
"绿粘土":(113,124,69),
"黄绿羊毛":(100,218,97),
"黄绿玻璃":(163,215,74),
"黄绿粘土":(143,160,97),
"黄羊毛":(203,196,73),
"黄玻璃":(225,226,96),
"黄粘土":(209,175,84),
"橙羊毛":(227,170,108),
"橙玻璃":(219,166,96),
"橙粘土":(191,127,81),
"棕羊毛":(128,89,76),
"棕玻璃":(140,116,96),
"棕粘土":(114,85,82),
"黑羊毛":(47,54,71),
"黑玻璃":(50,60,74),
"黑粘土":(63,55,68),
"灰羊毛":(103,107,116),
"灰玻璃":(112,117,122),
"灰粘土":(90,77,82),
"淡灰羊毛":(189,197,199),
"淡灰玻璃":(184,186,188),
"淡灰粘土":(174,153,148),
"白羊毛":(225,226,229),
"白玻璃":(234,235,236),
"白粘土":(220,206,200),
}
3.3为像素图每个像素点寻找最佳匹配
接下来要干的事非常简单,为每个像素点寻找最佳模拟的块。我的做法就是计算(R,G,B)三者的距离,取距离最接近的点。(在计算距离的过程中,可以引入权重来影响各个颜色对距离的影响程度,对色彩学不懂就不献丑了)
将新的颜色进行填充,效果如下:
这时候的图片实际上就对应MC中各个色块了。
4.打印施工图纸
我们将新Dodge当中的各个像素用行列进行标注,进行输出,如图:
好了根据这个我们可以开始施工了!
5.开始搬砖!
今天花了一上午的时间搬砖。大家可以看一下效果。搬砖中:
来张合影!
原图对比:
总结一些经验:
1.看施工图纸施工不如看图施工,不过仅限于图片颜色比较少的情况。2.动物乱窜真心烦。。。
3.自己做好标尺,就是前面图纸中的桩子,用于校验。4.45*45花了一上午,如果150*150.。。。哎,慢慢搬砖吧。
附Python代码:
#coding=utf-8
"""
@author: Leo
"""
from PIL import Image,ImageDraw
colors = {
"品红羊毛":(209,95,220),
"品红玻璃":(203,116,225),
"品红粘土":(187,129,156),
"红羊毛":(184,75,85),
"红玻璃":(184,88,97),
"红粘土":(180,95,93),
"粉红羊毛":(217,159,185),
"粉红玻璃":(231,169,199),
"粉红粘土":(195,117,120),
"紫羊毛":(167,84,216),
"紫玻璃":(164,103,204),
"紫粘土":(156,108,133),
"蓝羊毛":(62,84,188),
"蓝玻璃":(81,116,204),
"蓝粘土":(110,98,139),
"淡蓝羊毛":(127,169,222),
"淡蓝玻璃":(139,186,222),
"淡蓝粘土":(154,151,180),
"青羊毛":(63,153,184),
"青玻璃":(111,166,188),
"青粘土":(127,133,140),
"绿羊毛":(77,107,72),
"绿玻璃":(140,166,96),
"绿粘土":(113,124,69),
"黄绿羊毛":(100,218,97),
"黄绿玻璃":(163,215,74),
"黄绿粘土":(143,160,97),
"黄羊毛":(203,196,73),
"黄玻璃":(225,226,96),
"黄粘土":(209,175,84),
"橙羊毛":(227,170,108),
"橙玻璃":(219,166,96),
"橙粘土":(191,127,81),
"棕羊毛":(128,89,76),
"棕玻璃":(140,116,96),
"棕粘土":(114,85,82),
"黑羊毛":(47,54,71),
"黑玻璃":(50,60,74),
"黑粘土":(63,55,68),
"灰羊毛":(103,107,116),
"灰玻璃":(112,117,122),
"灰粘土":(90,77,82),
"淡灰羊毛":(189,197,199),
"淡灰玻璃":(184,186,188),
"淡灰粘土":(174,153,148),
"白羊毛":(225,226,229),
"白玻璃":(234,235,236),
"白粘土":(220,206,200),
}
R = 1
G = 1
B = 1
T = 500
def getDist(tupleA,tupleB):#计算RGB之间的距离
dictR = tupleA[0]-tupleB[0]
dictG = tupleA[1]-tupleB[1]
dictB = tupleA[2]-tupleB[2]
return R*dictR**2+G*dictG**2+B*dictB**2
def getMostSim(tupleA):#计算最相似的颜色
SimColor = ""
tempDist = 0xFFFFFF
Dist = 0
for color in colors:
#print colors[color]
Dist = getDist(colors[color],tupleA)
if Dist
SimColor = color
tempDist = Dist
#if Dist<=T:
#break
return SimColor,Dist,colors[SimColor]
im = Image.open("C:/Users/Leo/Desktop/Pic/513174045073095280.jpg")#原图片
#im.show()
pix = im.load()
print im.size
im.thumbnail((45,45))#目标像素
im.show()
i = 0
text = ""
draw = ImageDraw.Draw(im)
#print getMostSim((0x000000,0x000000,0x000000))
for x in range(im.size[0]):
text+="line:"+str(x)+" "
for y in range(im.size[1]):
#print x,y
#i+=1
#print i
Res = getMostSim(im.getpixel((x,y)))
ColorName = Res[0]
Color = Res[2]
draw.point((x,y),Color)
text +=" "+str(y)+ColorName
text+=' '
textfile = open("C:/Users/Leo/Desktop/Pic/hello",'w')#施工图纸
textfile.write(text)
textfile.close()
im.show()#效果预览
下载文档
热门试卷
- 2016年四川省内江市中考化学试卷
- 广西钦州市高新区2017届高三11月月考政治试卷
- 浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
- 浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
- 辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
- 广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
- 广西钦州市钦州港区2017届高三11月月考政治试卷
- 广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
- 广西钦州市高新区2016-2017学年高二11月月考政治试卷
- 广西钦州市高新区2016-2017学年高一11月月考政治试卷
- 山东省滨州市三校2017届第一学期阶段测试初三英语试题
- 四川省成都七中2017届高三一诊模拟考试文科综合试卷
- 2017届普通高等学校招生全国统一考试模拟试题(附答案)
- 重庆市永川中学高2017级上期12月月考语文试题
- 江西宜春三中2017届高三第一学期第二次月考文科综合试题
- 内蒙古赤峰二中2017届高三上学期第三次月考英语试题
- 2017年六年级(上)数学期末考试卷
- 2017人教版小学英语三年级上期末笔试题
- 江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
- 重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
- 江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
- 江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
- 山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
- 【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
- 四川省简阳市阳安中学2016年12月高二月考英语试卷
- 四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
- 安徽省滁州中学2016—2017学年度第一学期12月月考高三英语试卷
- 山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
- 福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
- 甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷
网友关注
- 教师资格考试|中学综合素质考点精讲:“以人为本”的学生观在教学中的运用
- 教师资格证考试《中学综合素质》资料整理十:德育过程
- 河南教师职业道德考点分析:教师职业道德修养
- 教师资格考试|中学综合素质考点精讲:教师的专业发展
- 河南教师职业道德考点分析:热爱学生严谨治学
- 河南教师职业道德考点分析:教师职业道德基本原则的要求
- 教师资格考试|中学综合素质考点精讲:素质教育与应试教育的区别
- 河南教师职业道德考点分析:尊重家长团结协作
- 《教师资格条例》实施办法(全文)
- 教师资格证考试《中学综合素质》资料整理十二:心理健康概述
- 河南教师职业道德考点分析:道德的一般分析
- 教师资格考试|中学综合素质考点精讲:教师职业角色的多样性
- 教师资格证考试《中学综合素质》资料整理十一:中学生心理辅导
- 河南教师职业道德考点分析:中学教师职业道德规范解读
- 《中华人民共和国职业教育法》(全文)
- 教师资格考试|中学综合素质考点精讲:提升教师职业道德修养的方法
- 河南教师职业道德考点分析:依法执教廉洁从教
- 教师资格考试|中学综合素质考点精讲:中学教师职业道德
- 教师资格证考试《中学综合素质》资料整理十七:中学生的认知发展
- 教师资格证考试《中学综合素质》资料整理十三:人格概述
- 教资统考|中学《综合素质》写作思路分析
- 河南教师职业道德考点分析:教师职业道德范畴
- 教师资格证考试《中学综合素质》资料整理二十:认知策略
- 河南教师职业道德考点分析:以身作则为人师表
- 2014年教师资格证考试《中学综合素质》高频考点提要
- 河南教师职业道德考点分析:教师职业道德评价
- 教师资格考试|中学综合素质考点精讲:素质教育的特点
- 河南教师职业道德考点分析:教师职业道德基本原则概述
- 教师资格证考试《中学综合素质》资料整理十八:中学生情绪和情感的发展
- 教师资格证考试《中学综合素质》资料整理十四:影响人格发展的因素
网友关注视频
- 苏科版数学七年级下册7.2《探索平行线的性质》
- 七年级英语下册 上海牛津版 Unit5
- 【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,天津市
- 3月2日小学二年级数学下册(数一数)
- 外研版八年级英语下学期 Module3
- 沪教版八年级下册数学练习册21.3(3)分式方程P17
- 外研版英语七年级下册module1unit3名词性物主代词讲解
- 七年级英语下册 上海牛津版 Unit3
- 冀教版小学数学二年级下册第二单元《有余数除法的简单应用》
- 冀教版小学数学二年级下册1
- 外研版英语三起6年级下册(14版)Module3 Unit1
- 8.练习八_第一课时(特等奖)(苏教版三年级上册)_T142692
- 【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
- 冀教版小学数学二年级下册第二单元《租船问题》
- 【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
- 北师大版数学四年级下册第三单元第四节街心广场
- 《空中课堂》二年级下册 数学第一单元第1课时
- 河南省名校课堂七年级下册英语第一课(2020年2月10日)
- 第8课 对称剪纸_第一课时(二等奖)(沪书画版二年级上册)_T3784187
- 【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
- 19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T3763925
- 冀教版小学英语四年级下册Lesson2授课视频
- 每天日常投篮练习第一天森哥打卡上脚 Nike PG 2 如何调整运球跳投手感?
- 沪教版八年级下册数学练习册一次函数复习题B组(P11)
- 第五单元 民族艺术的瑰宝_15. 多姿多彩的民族服饰_第二课时(市一等奖)(岭南版六年级上册)_T129830
- 二次函数求实际问题中的最值_第一课时(特等奖)(冀教版九年级下册)_T144339
- 冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣.mp4
- 小学英语单词
- 外研版英语七年级下册module3 unit2第一课时
- 冀教版小学英语五年级下册lesson2教学视频(2)
精品推荐
- 2016-2017学年高一语文人教版必修一+模块学业水平检测试题(含答案)
- 广西钦州市高新区2017届高三11月月考政治试卷
- 浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
- 浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
- 辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
- 广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
- 广西钦州市钦州港区2017届高三11月月考政治试卷
- 广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
- 广西钦州市高新区2016-2017学年高二11月月考政治试卷
- 广西钦州市高新区2016-2017学年高一11月月考政治试卷
分类导航
- 互联网
- 电脑基础知识
- 计算机软件及应用
- 计算机硬件及网络
- 计算机应用/办公自动化
- .NET
- 数据结构与算法
- Java
- SEO
- C/C++资料
- linux/Unix相关
- 手机开发
- UML理论/建模
- 并行计算/云计算
- 嵌入式开发
- windows相关
- 软件工程
- 管理信息系统
- 开发文档
- 图形图像
- 网络与通信
- 网络信息安全
- 电子支付
- Labview
- matlab
- 网络资源
- Python
- Delphi/Perl
- 评测
- Flash/Flex
- CSS/Script
- 计算机原理
- PHP资料
- 数据挖掘与模式识别
- Web服务
- 数据库
- Visual Basic
- 电子商务
- 服务器
- 搜索引擎优化
- 存储
- 架构
- 行业软件
- 人工智能
- 计算机辅助设计
- 多媒体
- 软件测试
- 计算机硬件与维护
- 网站策划/UE
- 网页设计/UI
- 网吧管理