1。手机重启后打开微信的那一刻,你会看到一张张小龙站在上面的名图。你有没有想过这样一个问题,如果上面的地球转一圈会怎样?2.效果图3.材料准备这里需要准备三种材料:1.地表材料;2、云图素材;3.微信地球抠图素材。1)地表素材2)云图素材3)微信地球抠图素材4.基本原理基本的贴图方法在本博客的上篇文章《用python实现旋转地球》中已经提到。有关详细信息,请参阅以下链接。这里着重介绍双图层材质的动态效果。云图像是灰度图像。白色区域代表厚云层,黑色区域代表薄云层。我们根据颜色设置不同的透明度。如果云图和地面的选择速度相同,会显得不自然。这里我们让云层的旋转速度慢于地面旋转速度的一半,以产生相对运动的效果。这样带来的问题是,地球自转360°后,云图只转了180°,必须翻倍到720°才能实现连续运动。具体云层透明度设置,需要根据实际效果调整参数。5、GIF压缩顺便给大家介绍一个比较好用的GIF压缩在线工具,链接如下。https://www.iloveimg.com/zh-c...直接生成的GIF动图超出传输限制,无法上传。使用该工具压缩后,文件体积大大减小,但对图像效果无明显影响。对于想要更轻松的学习Python开发技术,Python爬虫,Python大数据分析,人工智能等技术的初学者,这里我给大家分享一套系统的教学资源,加上我搭建的Python技术的学习裙子;七八四七五八二一四,一起学习。有相关开发工具,学习教程,专业老司机每天在线直播分享知识技术答疑解惑!6.完整代码一步一步的具体逻辑解释请参考文章《用python实现旋转地球》,这里贴出完整代码。`fromPILimportImage,ImageDrawimportmathimportnumpyasnpimportimageiodefcalcSphereXY2XYZ(px,py,maxHeight,longOffset):v0x=np.array(px)v0y=np.array(py)v03=np.subtract(v0x,maxHeight)v04复制代码=np.subtract(v0y,maxHeight)v1x=np.true_divide(v03,maxHeight)v1y=np.true_divide(v04,maxHeight)#print(max(v1x),min(v1x))v07=np.power(v1x,2)v08=np.power(v1y,2)v09=np.add(v07,v08)v0a=np.subtract(1,v09)v1z=np.power(v0a,1/2)#z#print('z:',max(v1z),min(v1z))v1lat=np.multiply(v1y,math.pi/2)#latv0lon=np.arctan2(v1z,-v1x)v1lon=np.add(v0lon,longOffset)#longv2lon=np.fmod(v1lon,math.pi*2)#longreturnv2lon,v1latdefcalcShpereLatLong2XY(vlon,vlat,width,height):v3x0=np.multiply(vlon,width/2/math.pi)v3y0=np.multiply(vlat,height/math.pi)v3y1=np.add(v3y0,height/2)v3x2=v3x0.astype(np.integer)v3y2=v3y1.astype(np.integer)返回v3x2,v3y2defgetPic(a):#imgBack=Image.open('地球3.jpg')imgBack=Image.open('世界地球日地图_8K_2.jpg')imgCloud=Image.open('世界地球云地球图_8K.jpg')width=imgBack.size[0]height=imgBack.size[1]imgBack=imgBack.convert('RGBA')arrayBack=np.array(imgBack)arrayCloud=np.array(imgCloud)circleSize=508img2=Image.new('RGBA',(circleSize,circleSize))img=Image.new('RGBA',(circleSize,circleSize),'black')w=img.size[0]h=img.size[1]pxList=[]pyList=[]fori在范围内(w):对于j在范围内(h):r=math.sqrt((i-w/2)**2+(j-h/2)**2)如果r
