- Kivy 教程
- Kivy - 首頁
- Kivy 基礎
- Kivy - 入門
- Kivy - 安裝
- Kivy - 架構
- Kivy - 檔案語法
- Kivy - 應用程式
- Kivy - Hello World
- Kivy - 應用程式生命週期
- Kivy - 事件
- Kivy - 屬性
- Kivy - 輸入
- Kivy - 行為
- Kivy 按鈕
- Kivy - 按鈕
- Kivy - 按鈕事件
- Kivy - 按鈕顏色
- Kivy - 按鈕大小
- Kivy - 按鈕位置
- Kivy - 圓形按鈕
- Kivy - 停用按鈕
- Kivy - 圖片按鈕
- Kivy 控制元件
- Kivy - 控制元件
- Kivy - 標籤
- Kivy - 文字輸入
- Kivy - 畫布
- Kivy - 線
- Kivy - 複選框
- Kivy - 下拉列表
- Kivy - 視窗
- Kivy - 滾動檢視
- Kivy - 輪播
- Kivy - 滑塊
- Kivy - 圖片
- Kivy - 彈出視窗
- Kivy - 開關
- Kivy - 微調器
- Kivy - 分隔器
- Kivy - 進度條
- Kivy - 氣泡
- Kivy - 標籤頁面板
- Kivy - 散點圖
- Kivy - 手風琴
- Kivy - 檔案選擇器
- Kivy - 顏色拾取器
- Kivy - 程式碼輸入
- Kivy - 模態檢視
- Kivy - 切換按鈕
- Kivy - 攝像頭
- Kivy - 樹形檢視
- Kivy - reStructuredText
- Kivy - 操作欄
- Kivy - 播放器
- Kivy - 模板檢視
- Kivy - 虛擬鍵盤
- Kivy - 觸控波紋
- Kivy - 音訊
- Kivy - 影片
- Kivy - 拼寫檢查
- Kivy - 效果
- Kivy - 輸入記錄器
- Kivy - OpenGL
- Kivy - 文字
- Kivy - 文字標記
- Kivy - 設定
- Kivy 佈局
- Kivy - 佈局
- Kivy - 浮動佈局
- Kivy - 網格佈局
- Kivy - 箱式佈局
- Kivy - 堆疊佈局
- Kivy - 錨點佈局
- Kivy - 相對佈局
- Kivy - 頁面佈局
- Kivy - 回收佈局
- Kivy - 佈局巢狀
- Kivy 高階概念
- Kivy - 配置物件
- Kivy - 圖集
- Kivy - 資料載入器
- Kivy - 快取管理器
- Kivy - 控制檯
- Kivy - 動畫
- Kivy - 多筆畫
- Kivy - 時鐘
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪貼簿
- Kivy - 工廠
- Kivy - 手勢
- Kivy - 語言
- Kivy - 圖形
- Kivy - 繪製
- Kivy - 打包
- Kivy - 花園
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用程式和專案
- Kivy - 繪圖應用程式
- Kivy - 計算器應用程式
- Kivy - 計時器應用程式
- Kivy - 攝像頭處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 控制元件動畫
- Kivy - 其他
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 圖集
如果您的應用程式需要處理大量圖片,尤其是在遠端伺服器上,則需要最佳化它們的載入時間。Kivy 框架中的圖集有助於減少載入時間。使用 Kivy 圖集,應用程式只需要載入一個圖片檔案,這減少了出錯的可能性,並且與載入多個圖片相比,也使用了更少的資源。圖集通常用於 Kivy 遊戲應用程式中渲染圖片。
Atlas 類位於 "kivy.atlas" 模組中。此模組可用於以程式設計方式構造 Atlas 物件,以及使用其命令列介面。
要能夠使用 Atlas,當前的 Kivy 環境必須具有 pillow 包 - Python 的一個圖片庫。如果不可用,請使用以下命令安裝:
pip3 install pillow
圖集由兩個檔案組成:
一個 JSON 檔案(副檔名為“.atlas”),其中包含圖集的圖片檔名和紋理位置。
圖片檔案,包含“.atlas”檔案引用的紋理。
假設以下圖片位於名為 imges 的目錄中:
C:\kivyenv\images 目錄
forward.png pause.png play.png previous.png
這些圖片的尺寸均為 64×64 畫素。因此,我們指定一個 256×256 畫素大小的圖集檔案來容納所有四個檔案。開啟作業系統的命令終端並執行以下命令:
python -m kivy.atlas myatlas 256x256 *.png
終端顯示以下日誌資訊,在最後,這兩個檔案將被建立到 images 資料夾中。
(kivyenv) C:\kivyenv\images>python -m kivy.atlas myatlas 256x256 *.png [INFO ] [Logger ] Record log in C:\Users\mlath\.kivy\logs\kivy_23-07-20_33.txt [INFO ] [deps ] Successfully imported "kivy_deps.gstreamer" 0.3.3 [INFO ] [deps ] Successfully imported "kivy_deps.angle" 0.3.3 [INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.3.1 [INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.6.0 [INFO ] [Kivy ] v2.2.0 [INFO ] [Kivy ] Installed at "c:\kivyenv\Lib\sitepackages\kivy\__init__.py" [INFO ] [Python ] v3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] [INFO ] [Python ] Interpreter at "c:\kivyenv\Scripts\python.exe" [INFO ] [Logger ] Purge log fired. Processing... [INFO ] [Logger ] Purge finished! [DEBUG ] STREAM b'IHDR' 16 13 [DEBUG ] STREAM b'sRGB' 41 1 [DEBUG ] STREAM b'gAMA' 54 4 [DEBUG ] STREAM b'pHYs' 70 9 [DEBUG ] STREAM b'IDAT' 91 1115 [DEBUG ] STREAM b'IHDR' 16 13 [DEBUG ] STREAM b'sRGB' 41 1 [DEBUG ] STREAM b'gAMA' 54 4 [DEBUG ] STREAM b'pHYs' 70 9 [DEBUG ] STREAM b'IDAT' 91 990 [DEBUG ] STREAM b'IHDR' 16 13 [DEBUG ] STREAM b'sRGB' 41 1 [DEBUG ] STREAM b'gAMA' 54 4 [DEBUG ] STREAM b'pHYs' 70 9 [DEBUG ] STREAM b'IDAT' 91 1230 [INFO ] [Atlas ] create an 256x256 rgba image Atlas created at myatlas.atlas 1 image has been created
您可以看到建立的兩個附加檔案是 myatlas-0.png,這是一個 256×256 的檔案,包含所有圖片,以及一個圖集檔案。
forward.png myatlas-0.png myatlas.atlas pause.png play.png previous.png
“.atlas”檔案是一個 JSON 檔案,包含組成檔案的紋理位置資訊。
{"myatlas-0.png": {"forward": [2, 190, 64, 64], "pause": [68, 190, 64, 64], "play": [134, 190, 64, 64], "previous": [2, 124, 64, 64]}}
為了在 Kivy 語言中使用圖集,我們必須使用以下格式:
atlas://path/to/atlas/atlas_name/id.
"id" 檔案指的是沒有副檔名的圖片檔名。
例如,如果要將圖片檔案用作按鈕在正常狀態下的背景,則可以按如下方式操作:
B1 = Button(background_normal='images/play.png')
Now, aAfter generating the Atlas, you can use the URL 'atlas://images/myatlas/play' as the value.
B1=Button(background_normal='atlas://images/myatlas/play')
請注意,在圖集 URL 中,無需新增 .atlas 副檔名。它將自動附加到檔名。
示例
讓我們使用圖集中的圖片 URL 來設定應用程式視窗上四個按鈕(播放、暫停、快進和後退)的正常背景。
在執行以下程式碼之前,必須按照上述方法建立圖集檔案:
from kivy.app import App
from kivy.graphics import *
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.core.window import Window
Window.size = (720, 400)
class AtlasApp(App):
def build(self):
main = GridLayout(cols=1)
self.l1 = Label(text='Using Atlas', font_size=32)
main.add_widget(self.l1)
root = FloatLayout(size=(Window.width, 100))
with root.canvas:
Color(.2, .7, .1, 1)
Rectangle(pos=root.pos, size=root.size)
self.btn1 = Button(
size_hint=(None, None),
pos_hint={'center_x': .2, 'center_y': .2}
)
self.btn2 = Button(
size_hint=(None, None),
pos_hint={'center_x': .4, 'center_y': .2}
)
self.btn3 = Button(
size_hint=(None, None),
pos_hint={'center_x': .6, 'center_y': .2}
)
self.btn4 = Button(
size_hint=(None, None),
pos_hint={'center_x': .8, 'center_y': .2}
)
self.btn1.background_normal = 'atlas://images/myatlas/forward'
self.btn2.background_normal = 'atlas://images/myatlas/play'
self.btn3.background_normal = 'atlas://images/myatlas/pause'
self.btn4.background_normal = 'atlas://images/myatlas/previous'
root.add_widget(self.btn1)
root.add_widget(self.btn2)
root.add_widget(self.btn3)
root.add_widget(self.btn4)
main.add_widget(root)
return main
AtlasApp().run()
輸出
執行此程式碼時,將生成以下輸出視窗: