教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 生活休闲> 游戏攻略> 用MineCraft作画(个人制作)

用MineCraft作画(个人制作)

上传者:孙丽华
|
上传时间:2016-09-29
|
次下载

用MineCraft作画(个人制作)

作者:猫在乎

之前在各种地方也见过用MC作画,感觉非常amazing。如下:

所以自己也试想了一下,如果让我来制作这样一幅画,我会怎么去做呢。

1.首先需要一份素材。(废话)

2.将其像素化

由于素材通常尺寸较大(1000*1000)在拼图过程中肯定不现实,所以我们要将其像素化,简而言之就是将1000*1000的图缩小成100*100或者其他尺寸,这样就有一种像素风的感觉,方便我们之后的操作,例如:

由于图是我自己截的,所以像素可能有些不对。这里将一幅618*613dodge压缩成了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月月考生物试卷

网友关注视频

【获奖】科粤版初三九年级化学下册第七章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