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

基于Python制作GIF表情包生成工具

 更新時間:2023年07月03日 11:21:57   作者:蘿卜大雜燴  
在當(dāng)前無表情包不會聊天的時代,怎么也不能輸在表情包數(shù)量不足上啊,今天咱們就來基于Python制作一個?gif?生成工具,用來制作表情包也太好用啦

在當(dāng)前無表情包不會聊天的時代,怎么也不能輸在表情包數(shù)量不足上啊,今天咱們就來制作一個 gif 生成工具,用來制作表情包也太好用啦

先來看看整體效果

頁面設(shè)計

本文工具的頁面,是通過 Qt Designer 來設(shè)計的,我們可以直接在安裝了 PyQt5-tools 的目錄下找到 designer.exe 這個 EXE 執(zhí)行文件,直接執(zhí)行,比如我這里就是如下目錄

C:\Python3\Lib\site-packages\qt5_applications\Qt\bin\designer.exe

當(dāng)然也可以直接配置到 PyCharm 里,比如這樣

這里的配置就一筆帶過了,如果有配置不成功的朋友可以私下了解或者直接百度也行

我們打開 Qt Designer 工具之后,可以看到如下頁面

此時我們只需要妥妥拽拽就可以完成頁面的布局工作

下面簡單說一下上面布局所使用的組件

  • 帶有文字“選擇圖片”和“生成gif”的組件是兩個 QPushButton
  • “選擇圖片”按鈕下方的是一個 QListVIew 組件
  • 再往下的三段文字是 QLabel 組件,后面分別對應(yīng)的 QLineEdit 組件
  • “生成gif”按鈕下方的也是兩個 QLabel 組件,分別用來預(yù)覽圖片和作者聲明

這樣我們完成布局之后,保存當(dāng)前配置,例如保存為“gif.ui”

接下來我們使用 PySide2 來實(shí)現(xiàn)頁面邏輯,所以需要先安裝這個庫

pip install PySide2

安裝完成之后,我們直接在 cmd 命令行輸入如下命令,就可以把剛剛生成的 ui 文件轉(zhuǎn)化為 py 代碼

pyside2-uic -o gif.py gif.ui

這樣一個頁面布局就完成了,而且轉(zhuǎn)化而來的頁面布局 py 文件基本不用修改,直接引用即可

核心邏輯

下面我們編寫核心邏輯,在生成的 py 文件同目錄下創(chuàng)建一個 main.py 文件,然后引用剛剛生成的 py 文件內(nèi)容

from?gif?import?Ui_Form
from?PySide2.QtWidgets?import?QMainWindow,?QApplication,?QFileDialog
class?CreateGif(QMainWindow,?Ui_Form):
????def?__init__(self):
????????super().__init__()
????????self.setupUi(self)
????????self.setup()
????????self.show()

下面我們設(shè)置 setup 函數(shù),給對應(yīng)的組件設(shè)置初始值

????def?setup(self):
????????self.imgs?=?None
????????self.gifImgName?=?None
????????self.lineEdit.setText("0")
????????self.lineEdit_2.setText("0")
????????self.lineEdit_3.setText("500")

再接下來編寫選擇圖片的函數(shù)

????def?choose_img(self):
????????self.imgs?=?QFileDialog.getOpenFileNames(
????????????caption="選擇圖片",?filter="")[0]??#?(*.png,?*.jpg,?*.PNG)
????????if?self.imgs:
????????????imgwidth,?imgheight?=?Image.open(self.imgs[0]).size
????????????self.lineEdit.setText(str(imgwidth))
????????????self.lineEdit_2.setText(str(imgheight))
????????????new_imgs?=?[]
????????????for?img?in?self.imgs:
????????????????img_name?=?os.path.basename(img)
????????????????new_imgs.append(img_name)
????????????strings?=?QStringListModel(new_imgs)
????????????self.listView.setModel(strings)

首先通過 QFileDialog 提供的方法來獲取圖片文件,然后使用 PIL 庫讀取圖片的大小,并更新兩個 lineEdit 組件值,最后把所有選到的圖片都展示在 listView 組件當(dāng)中

下面是生成 gif 的函數(shù)

????def?gen_gif(self):
????????frames?=?[]
????????imgwidth?=?int(self.lineEdit.text())
????????imgheight?=?int(self.lineEdit_2.text())
????????imgspeed?=?int(self.lineEdit_3.text())
????????for?img?in?self.imgs:
????????????img?=?Image.open(img).resize((imgwidth,?imgheight)).convert("RGBA")
????????????frames.append(img)
????????self.gifImgName?=?os.path.splitext(os.path.basename(self.imgs[0]))[0]
????????frames[0].save(f"{self.gifImgName}.gif",?append_images=frames[1:],?loop=0,?save_all=True,?duration=imgspeed)
????????self.displayGif()

也不復(fù)雜,以選擇圖片的第一張名字命名要生成的 gif 圖片,然后通過 save 方法把其余圖片保存至第一張圖片當(dāng)中,類型選擇 gif 即可

最后就是展示生成 gif 的代碼

????def?displayGif(self):
????????self.movie?=?QMovie()
????????self.movie.setFileName(f"{self.gifImgName}.gif")
????????self.label.setMovie(self.movie)
????????self.movie.start()

使用 PySide2.QtGui 中的 QMovie 方法,在 label 當(dāng)中展示 gif 圖片

到此這篇關(guān)于基于Python制作GIF表情包生成工具的文章就介紹到這了,更多相關(guān)Python GIF表情包生成內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中pygame游戲模塊的用法詳解

    Python中pygame游戲模塊的用法詳解

    Pygame是一組用來開發(fā)游戲軟件的 Python 程序模塊,Pygame 在 SDL(Simple DirectMedia Layer) 的基礎(chǔ)上開發(fā)而成,它提供了諸多操作模塊,本文給大家介紹了Python中pygame游戲模塊的用法,需要的朋友可以參考下
    2024-01-01
  • python中subplot大小的設(shè)置步驟

    python中subplot大小的設(shè)置步驟

    matploglib能夠繪制出精美的圖表,有時候我們希望把一組圖放在一起進(jìn)行比較,就需要用到matplotlib中提供的subplot了,這篇文章主要給大家介紹了關(guān)于python中subplot大小的設(shè)置方法,需要的朋友可以參考下
    2021-06-06
  • 如何使用python傳入不確定個數(shù)參數(shù)

    如何使用python傳入不確定個數(shù)參數(shù)

    這篇文章主要介紹了如何使用python傳入不確定個數(shù)參數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Python爬取視頻時長場景實(shí)踐示例

    Python爬取視頻時長場景實(shí)踐示例

    這篇文章主要為大家介紹了Python獲取視頻時長場景實(shí)踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • python pytest進(jìn)階之fixture詳解

    python pytest進(jìn)階之fixture詳解

    這篇文章主要介紹了python pytest進(jìn)階之fixture詳解,學(xué)pytest就不得不說fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一樣,如果不學(xué)fixture那么使用pytest和使用unittest是沒什么區(qū)別的,需要的朋友可以參考下
    2019-06-06
  • Python中的全局變量如何理解

    Python中的全局變量如何理解

    在本篇文章里小編給大家整理的是關(guān)于Python中全局變量詳解內(nèi)容,需要的朋友們可以參考下。
    2020-06-06
  • TensorFlow實(shí)現(xiàn)創(chuàng)建分類器

    TensorFlow實(shí)現(xiàn)創(chuàng)建分類器

    這篇文章主要為大家詳細(xì)介紹了TensorFlow實(shí)現(xiàn)創(chuàng)建分類器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 如何使用python?wasmtime調(diào)用rust生成的wasm庫

    如何使用python?wasmtime調(diào)用rust生成的wasm庫

    這篇文章主要介紹了如何使用python?wasmtime調(diào)用rust生成的wasm庫,使用python wasmtime來訪問rust庫的便捷方法,步驟極其簡練,可以在生產(chǎn)環(huán)境中使用,需要的朋友可以參考下
    2023-01-01
  • python實(shí)現(xiàn)從web抓取文檔的方法

    python實(shí)現(xiàn)從web抓取文檔的方法

    這篇文章主要介紹了python實(shí)現(xiàn)從web抓取文檔的方法,以抓取人人網(wǎng)頁面為例講述了完整的web文檔抓取方法,需要的朋友可以參考下
    2014-09-09
  • python基礎(chǔ)學(xué)習(xí)之遞歸函數(shù)知識總結(jié)

    python基礎(chǔ)學(xué)習(xí)之遞歸函數(shù)知識總結(jié)

    在函數(shù)中調(diào)用函數(shù)自身,我們把這樣的函數(shù)叫做遞歸函數(shù), 遞歸函數(shù)就是循環(huán)的調(diào)用,類似于俄羅斯套娃,本文給各位小伙伴詳細(xì)介紹了python遞歸函數(shù),需要的朋友可以參考下
    2021-05-05

最新評論

元江| 大理市| 合川市| 盐源县| 那坡县| 射阳县| 宽城| 望谟县| 辉县市| 金坛市| 秭归县| 当涂县| 五河县| 广东省| 治多县| 东山县| 怀集县| 福泉市| 彭州市| 桐柏县| 东阳市| 开化县| 禹城市| 禹州市| 徐汇区| 香格里拉县| 宁陵县| 交口县| 开远市| 英德市| 辽阳县| 城固县| 高安市| 陇西县| 双牌县| 仁怀市| 栾城县| 望奎县| 晴隆县| 库尔勒市| 郴州市|