最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Python批量生成炫酷掃光GIF動效效果

 更新時(shí)間:2025年11月27日 08:27:27   作者:程序員愛釣魚  
在電商、廣告或社交媒體中,我們經(jīng)??吹缴唐穲D片帶有光線掃過的動態(tài)效果,這類動效不僅吸引眼球,還能讓產(chǎn)品顯得更有質(zhì)感,今天,我就分享一個(gè)用 Python 批量生成掃光 GIF 的小工具,并附帶 可視化 GUI,操作非常簡單,需要的朋友可以參考下

技術(shù)棧與依賴

本工具使用了以下 Python 庫:

  • Pillow:用于圖片處理(讀寫、濾鏡、透明通道等)。
  • numpy:矩陣計(jì)算,加快圖像運(yùn)算。
  • imageio:將圖片序列生成 GIF。
  • ttkbootstrap:美化版 Tkinter GUI,操作友好。
  • tkinter:基礎(chǔ) GUI 框架,用于文件選擇和交互。

安裝依賴:

pip install pillow numpy imageio ttkbootstrap

核心思路

  1. 生成光條 Mask 通過數(shù)學(xué)函數(shù)生成一個(gè)沿對角線掃過的光條掩碼,并支持調(diào)節(jié)寬度、角度和多光源疊加效果。
  2. 疊加光條到原圖 使用 NumPy 對圖片像素做線性疊加,讓光條有柔和的漸變效果,并支持調(diào)整亮度和透明度。
  3. 生成多幀 GIF 將每一幀的光條位置稍微移動,然后利用 imageio 保存成 GIF,實(shí)現(xiàn)光條流動的效果。

關(guān)鍵代碼示例

生成光條掩碼

def make_sweep_mask(size, progress, offset=0.0, width_px=25):
    W, H = size
    diag = int((W**2 + H**2)**0.5 * 1.3)
    x = np.linspace(-1.5, 1.5, diag)
    y = np.linspace(-1.5, 1.5, diag)
    xx, yy = np.meshgrid(x, y)

    rad = np.deg2rad(35)  # 光條角度
    xr = xx * np.cos(rad) + yy * np.sin(rad)
    center = progress * 2 - 1 + offset
    dist = np.abs(xr - center)

    mask = np.exp(-(dist / (width_px / min(W, H))) ** 2)
    return Image.fromarray((mask * 255).astype(np.uint8), 'L').crop((diag-W)//2, (diag-H)//2, (diag+W)//2, (diag+H)//2)

光條疊加

def apply_sweep(base_img, frame_index, width_px=25):
    mask = make_sweep_mask(base_img.size, frame_index / (FRAMES - 1), width_px=width_px)
    mask = mask.filter(ImageFilter.GaussianBlur(max(1, int(min(base_img.size)*0.03))))
    alpha = np.clip(np.array(mask)/255*1.5, 0, 1)
    base_arr = np.array(base_img.convert("RGBA"), dtype=np.float32)
    out_rgb = base_arr[..., :3] + alpha[..., None] * (255 - base_arr[..., :3])
    return Image.fromarray(np.dstack([out_rgb, base_arr[...,3]]).astype(np.uint8), "RGBA")

批量生成 GIF

def generate_gif_batch():
    file_paths = filedialog.askopenfilenames(title="選擇圖片")
    output_dir = filedialog.askdirectory(title="選擇輸出文件夾")
    for path in file_paths:
        base = Image.open(path).convert("RGBA")
        frames = [apply_sweep(base, i) for i in range(FRAMES)]
        out_path = os.path.join(output_dir, os.path.splitext(os.path.basename(path))[0]+"_sweep.gif")
        imageio.mimsave(out_path, frames, duration=float(duration_entry.get()))

GUI 使用界面

工具提供簡單易用的 GUI:

  • 輸入光條寬度(px)
  • 設(shè)置每幀時(shí)長(秒)
  • 點(diǎn)擊按鈕選擇多張圖片并生成 GIF

GUI 使用 ttkbootstrap 美化,讓操作更直觀:

root = ttk.Window(title="掃光GIF生成器", themename="superhero")
width_entry = ttk.Entry(root)
duration_entry = ttk.Entry(root)
ttk.Button(root, text="生成 GIF", command=generate_gif_batch).pack()
root.mainloop()

效果展示

使用該工具,只需幾秒鐘就能將普通圖片生成帶光條掃過的動態(tài) GIF,光條位置、寬度、透明度和幀數(shù)都可以靈活調(diào)節(jié),非常適合電商主圖和社交媒體動圖。

總結(jié)

這個(gè)工具的特點(diǎn):

  • 批量處理:一次選擇多張圖片即可生成 GIF
  • 可調(diào)光條:寬度、顏色、透明度、模糊可調(diào)
  • GUI 操作簡單:無需命令行即可完成全部操作
  • 純 Python 實(shí)現(xiàn):跨平臺、輕量級

如果你是電商運(yùn)營或者社媒設(shè)計(jì)師,想給商品圖片加點(diǎn)“亮點(diǎn)”,這個(gè)小工具絕對值得一試。

到此這篇關(guān)于用Python批量生成炫酷掃光GIF動效效果的文章就介紹到這了,更多相關(guān)Python炫酷掃光GIF動效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)html轉(zhuǎn)換為pdf報(bào)告(生成pdf報(bào)告)功能示例

    Python實(shí)現(xiàn)html轉(zhuǎn)換為pdf報(bào)告(生成pdf報(bào)告)功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)html轉(zhuǎn)換為pdf報(bào)告功能,結(jié)合實(shí)例形式分析了Python使用pdfkit實(shí)現(xiàn)HTML轉(zhuǎn)換為PDF的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-05-05
  • 一文詳解如何使用JPype實(shí)現(xiàn)Java與Python的深度交互

    一文詳解如何使用JPype實(shí)現(xiàn)Java與Python的深度交互

    在軟件開發(fā)領(lǐng)域,Java與Python作為兩大主流編程語言,各自在不同場景中展現(xiàn)出獨(dú)特優(yōu)勢。Java以其穩(wěn)定性、跨平臺性和強(qiáng)大的企業(yè)級生態(tài)占據(jù)著后端開發(fā)的半壁江山,而Python則憑借簡潔的語法和豐富
    2025-08-08
  • python自動發(fā)送郵件腳本

    python自動發(fā)送郵件腳本

    這篇文章主要為大家詳細(xì)介紹了python自動發(fā)送郵件的腳本源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python中l(wèi)strip()截掉字符的實(shí)例講解

    python中l(wèi)strip()截掉字符的實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于python中l(wèi)strip()截掉字符的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-05-05
  • Python 字符串與二進(jìn)制串的相互轉(zhuǎn)換示例

    Python 字符串與二進(jìn)制串的相互轉(zhuǎn)換示例

    今天小編就為大家分享一篇Python 字符串與二進(jìn)制串的相互轉(zhuǎn)換示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python類和實(shí)例的屬性機(jī)制原理詳解

    Python類和實(shí)例的屬性機(jī)制原理詳解

    這篇文章主要介紹了Python類和實(shí)例的屬性機(jī)制原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python讀取網(wǎng)頁內(nèi)容的方法

    Python讀取網(wǎng)頁內(nèi)容的方法

    這篇文章主要介紹了Python讀取網(wǎng)頁內(nèi)容的方法,實(shí)例分析了Python基于URL讀取網(wǎng)頁內(nèi)容的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python  Asyncio模塊實(shí)現(xiàn)的生產(chǎn)消費(fèi)者模型的方法

    Python Asyncio模塊實(shí)現(xiàn)的生產(chǎn)消費(fèi)者模型的方法

    這篇文章主要介紹了Python Asyncio模塊實(shí)現(xiàn)的生產(chǎn)消費(fèi)者模型的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Python正則替換字符串函數(shù)re.sub用法示例

    Python正則替換字符串函數(shù)re.sub用法示例

    這篇文章主要介紹了Python正則替換字符串函數(shù)re.sub用法,結(jié)合實(shí)例形式分析了正則替換字符串函數(shù)re.sub的功能及簡單使用方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • matplotlib?3D模型繪制一朵小紅花

    matplotlib?3D模型繪制一朵小紅花

    這篇文章主要介紹了matplotlib?3D模型繪制一朵小紅花,代碼有趣也有一定的知識參考價(jià)值,需要的朋友可以參考文章內(nèi)容下去試試
    2022-02-02

最新評論

临江市| 洮南市| 乌拉特前旗| 阿尔山市| 会同县| 科技| 大同市| 科技| 郧西县| 通州区| 大港区| 湛江市| 九江市| 徐汇区| 万荣县| 泸水县| 彭州市| 丁青县| 吴江市| 桑日县| 洛隆县| 绥德县| 金乡县| 清镇市| 临沂市| 江津市| 安化县| 攀枝花市| 镇江市| 枣庄市| 临高县| 开阳县| 沂南县| 勃利县| 安泽县| 岳池县| 淮北市| 枣强县| 萨迦县| 长泰县| 和顺县|