日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ int8_t转int_Python 90行代码让微信地球转起来,你也可以!| 原力计划

發布時間:2023/12/19 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ int8_t转int_Python 90行代码让微信地球转起来,你也可以!| 原力计划 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | xiaorang

責編 | Aholiab

頭圖 | CSDN 下載自視覺中國

出品 | CSDN(ID:CSDNnews)

手機重啟后打開微信的一瞬間,會看到一幅有名的圖片,上面站著一個“張小龍”。

你可曾想過這樣一個問題,如果上面那個地球轉起來會是怎樣?就像下面這樣:

效果簡直不要太酷炫,那么這樣一個酷炫的操作是怎么做出來的呢?我們接著往下看。

這里共需要準備三樣素材:

  • 地球表面素材

  • 云圖素材

  • 微信地球的摳圖素材

  • 地球表面素材如下所示:

    云圖素材如下所示:

    微信地球摳圖素材如下所示:

    這里重點講雙層素材的動態效果。云圖是灰度圖,白色地方代表云層厚,黑色的地方代表那里云層薄,我們根據顏色設置不同的透明度。

    如果云圖與地面的選擇速度相同,會顯得不自然,我們這里讓云層旋轉速度比地面旋轉速度慢一半,產生相對運動的效果。

    這樣帶來的問題是,地球旋轉360°后云圖只旋轉了180°,必須加倍到720°才能實現連續運動。

    具體的云層透明度設置,參數需根據實際效果進行調整。

    接下來是GIF壓縮,順便給大家介紹一個比較好用的GIF壓縮工具iloveimg。用這個工具可以直接生成GIF動圖,并且不會超過傳輸限制。用此工具壓縮后文件體積大幅縮小,但圖片效果沒有肉眼可以察覺的影響。

    那么,最關鍵的一步來了,我們該如何用Python實現旋轉地球的效果呢?完整代碼如下所示:

    from PIL import Image, ImageDraw
    import math
    import numpy as np
    import imageio

    def calcSphereXY2XYZ(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) # lat
    v0lon= np.arctan2(v1z, -v1x)
    v1lon= np.add(v0lon, longOffset) # long
    v2lon= np.fmod(v1lon, math.pi*2) # long
    return v2lon, v1lat

    def calcShpereLatLong2XY(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)
    return v3x2, v3y2

    def getPic(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= 508
    img2= Image.new('RGBA', (circleSize,circleSize))
    img= Image.new('RGBA', (circleSize,circleSize), 'black')
    w= img.size[0]
    h= img.size[1]
    pxList=
    pyList=
    for i in range(w):
    for j in range(h):
    r= math.sqrt((i-w/2)**2+(j-h/2)**2)
    if rpxList.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]
    for i in range(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)
    if c0>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)
    return img
    if __name__=='__main__':
    frames=
    str1= '微信地球_mask.png'
    img1= Image.new('RGB', (750,1334))
    img2= Image.open(str1)
    for i in range(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)

    對Python感興趣的同學,可以將上面代碼down下來慢慢研究。通過對小項目的實現可以快速提升代碼的實操能力。

    你學會了嗎?如有疑問歡迎在評論區留言。

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的c++ int8_t转int_Python 90行代码让微信地球转起来,你也可以!| 原力计划的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字幕日韩欧美一区二区三区 | 久久久久久久国产精品美女 | 久久久久久影视 | 欧美国产精品一区二区三区 | 精品无码一级毛片免费 | 国产资源在线视频 | 三大队在线观看 | 中文字幕精品无码一区二区 | 国产精品白虎 | 亚洲青涩网 | 欧美日韩亚洲国产综合 | 国产高清一二三区 | 三级免费网站 | 日本成人在线视频网站 | 人人爽人人干 | 午夜精品一区二区三 | 夜色视频在线观看 | 久久日本视频 | 特级黄色录像 | 麻豆短视频在线观看 | 国产精品--色哟哟 | 中国特级黄色片 | 精品一区视频 | 少妇人妻偷人精品一区二区 | 午夜久久久久久久 | 国产精品视频久久久久久久 | 精品国产乱子伦一区二区 | 国产精品久久久久久久久晋中 | 日韩一二在线 | 久久久综合网 | 久久久无码18禁高潮喷水 | 人人妻一区二区三区 | 久久久久亚洲精品国产 | 日本精品免费一区二区三区 | 国产高潮白浆 | av地址在线观看 | 亚洲再线| 疯狂撞击丝袜人妻 | 制服.丝袜.亚洲.中文.综合 | 成人毛片视频免费看 | 青青操视频在线观看 | 天堂中文在线观看 | porn麻豆 | 麻豆高清免费国产一区 | 中国爆后菊女人的视频 | 精品久久久久久久免费人妻 | 亚色视频在线观看 | 黄色精品在线观看 | 另类中文字幕 | 怡红院成人影院 | 青青青免费视频观看在线 | 99一区二区 | 麻豆久久久午夜一区二区 | 黄色视屏在线播放 | 国产片淫乱18一级毛片动态图 | 五月婷婷久| 性欧美成人播放77777 | 亚洲不卡网| 男女视频免费网站 | 亚洲第一av网 | 18无码粉嫩小泬无套在线观看 | 欧美日皮视频 | 瑟瑟久久| 精品国产成人av | 午夜中出 | 污的网站 | 亚洲视频1 | 久草视频中文在线 | 日韩一区二区三区三四区视频在线观看 | 国产欧美日韩精品一区二区三区 | 亚洲精品小视频 | 精品久久网站 | 91久久超碰| 人成网站在线观看 | 国产人妻一区二区三区四区五区六 | 奇米av在线 | 午夜av一区 | 国产永久免费 | 色婷婷视频在线 | 免费成人电影在线观看 | 丝袜国产在线 | 亚洲综合色视频 | 精品韩国一区二区三区 | 女性私密整形视频 | 在线观看网站黄 | 99热网 | 80日本xxxxxxxxx96 亚洲国产精品视频在线 | 男ji大巴进入女人视频 | 免费美女毛片 | 亚洲图片另类小说 | 少妇福利在线 | 欧美少妇毛茸茸 | 香蕉av一区二区三区 | 男人天堂欧美 | 天天干夜夜夜 | 国产91嫩草 | 免费看黄色漫画 | 日韩不卡视频在线观看 | 韩国三级hd中文字幕的背景音乐 |