用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月月考生物试卷
网友关注
- 电路复习题(0912)0
- 通信电子线路课程设计说明书
- 7.毕业(设计)论文开题报告
- 2014c语言课程设计任务书
- 《基因工程》每章思考题
- 图像空域锐化
- 宁波中学方案设计说明
- 实验室设备系统设计与现实毕业设计论文
- 电子钟课程设计
- 重庆大学电磁场习题答案习题(第4章)
- 概率论习题答案
- 《电工电子基础》课程教学大纲
- 2015计算方法实验报告(西南交大)
- 2013年模具设计试卷
- 单片机抢答器课程设计
- 外文文献
- 单片机点阵课程设计
- 车身设计 卷A(答)
- 注塑模外文翻译
- 施工组织课程设计任务书
- 1.工程技术学院本科毕业论文统一格式和有关规定汇编
- 基于PROE的平板后盖注塑模具设计
- 传感器总结
- 全回转步履式液压挖掘机
- 纠正预防措施培训试题及答案
- 模具CAD报告模板
- 本科学生毕业设计工作规范
- 视频图像中雨滴去除技术研究
- 蜂窝煤成型机设计毕业论文
- 继电保护课程设计答辩提纲答案郭饱吹
网友关注视频
- 【获奖】科粤版初三九年级化学下册第七章7.3浓稀的表示
- 冀教版小学数学二年级下册第二单元《有余数除法的竖式计算》
- 《空中课堂》二年级下册 数学第一单元第1课时
- 人教版历史八年级下册第一课《中华人民共和国成立》
- 冀教版小学数学二年级下册第二单元《租船问题》
- 冀教版英语五年级下册第二课课程解读
- 沪教版牛津小学英语(深圳用) 五年级下册 Unit 12
- 冀教版小学数学二年级下册第二单元《余数和除数的关系》
- 二年级下册数学第二课
- 外研版英语三起5年级下册(14版)Module3 Unit2
- 【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,辽宁省
- 3月2日小学二年级数学下册(数一数)
- 北师大版八年级物理下册 第六章 常见的光学仪器(二)探究凸透镜成像的规律
- 《小学数学二年级下册》第二单元测试题讲解
- 【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
- 30.3 由不共线三点的坐标确定二次函数_第一课时(市一等奖)(冀教版九年级下册)_T144342
- 第五单元 民族艺术的瑰宝_15. 多姿多彩的民族服饰_第二课时(市一等奖)(岭南版六年级上册)_T129830
- 第12章 圆锥曲线_12.7 抛物线的标准方程_第一课时(特等奖)(沪教版高二下册)_T274713
- 冀教版小学数学二年级下册1
- 冀教版小学英语四年级下册Lesson2授课视频
- 冀教版小学数学二年级下册第二单元《有余数除法的简单应用》
- 冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣.mp4
- 沪教版牛津小学英语(深圳用) 四年级下册 Unit 3
- 沪教版牛津小学英语(深圳用) 五年级下册 Unit 7
- 小学英语单词
- 北师大版数学四年级下册第三单元第四节街心广场
- 【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,江苏省
- 冀教版小学英语五年级下册lesson2教学视频(2)
- 冀教版英语四年级下册第二课
- 8.对剪花样_第一课时(二等奖)(冀美版二年级上册)_T515402
精品推荐
- 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
- 网吧管理