书圈|90行代码让微信地球转起来,太酷了!(python实现)( 二 )
imgCloud= Image.open( '世界地球云地图_8K.jpg')
width= imgBack.size[ 0]
1]
imgBack= imgBack.convert( 'RGBA')
arrayBack= np.array(imgBack)
arrayCloud= np.array(imgCloud)
circleSize= 508
img2= Image.new( 'RGBA', (circleSize,circleSize))
img= Image.new( 'RGBA', (circleSize,circleSize), 'black')
w= img.size[ 0]
h= img.size[ 1]
pxList=[]
pyList=[]
fori inrange(w):
forj inrange(h):
r= math.sqrt((i-w/ 2)** 2+(j-h/ 2)** 2)
ifr<circleSize/ 2:
pxList.append(i)
pyList.append(j)
nplon, nplat= calcSphereXY2XYZ(pxList, pyList, h/ 2, a)
nplon2, nplat2= calcSphereXY2XYZ(pxList, pyList, h/ 2, a/ 2)
# nplon, nplat= rotSphere(nplon, nplat, )
npx, npy= calcShpereLatLong2XY(nplon, nplat, width -1, height)
npx2, npy2= calcShpereLatLong2XY(nplon2, nplat2, width -1, height)
color= arrayBack[npy, npx]
color2= arrayCloud[npy2, npx2]
fori inrange(len(pxList)):
x= pxList[i]
y= pyList[i]
cc=color[i]
# print(cc)
cc= tuple(cc)
img.putpixel((x,y), cc)
c2= color2[i]
c0= int(c2[ 0]* 1.6)
ifc0> 255:
c0= 255
c_alpha= int(c2[ 0]* 0.9)
c2= (c0,c0,c0,c_alpha)
img2.putpixel((x,y), c2)
r,g,b,a= img2.split
img.paste(img2, ( 0, 0), mask=a)
returnimg
if__name__== '__main__':
frames=[]
str1= '微信地球_mask.png'
img1= Image.new( 'RGB', ( 750, 1334))
img2= Image.open(str1)
fori inrange( 0, 720, 12):
a= -i*math.pi/ 180
img= getPic(a)
img1.paste(img,( 122, 424))
r,g,b,alpha=img2.split
img1.paste(img2, ( 0, 0), mask=alpha)
str1= 'temp%03d.png'%i
print(str1)
img1.save(str1)
im = imageio.imread(str1)
frames.append(im)
# img.show
imageio.mimsave( 'earth.gif', frames, 'GIF', duration= 0.20)
?? ???
喜欢就点击“在看”吧
推荐阅读
- 外滩教育|《哈利波特》《魔戒》的背后都有这本书的影子?上外名师带你解构西方文化源代码
- 机器之心Pro|会写代码不如会演讲?白板面试是否筛掉了真正优秀的求职者
- 阿布扎比|阿提哈德航空宣布与阿拉伯阿布扎比航空签订新的代码共享协议
- CSDN|Python 90行代码让微信地球转起来,你也可以!| 原力计划
- |四川链接器01,高清代码操作,多彩生活
- 汽车|iOS 13.5.1代码泄密:钱包可配对汽车,CarKey有望近期推出