[TOC]
# **pygame.image**
用于圖像傳輸的 Pygame 模塊。
## **函數**
* pygame.image.load() — 從文件加載新圖片
* pygame.image.save() — 將圖像保存到磁盤上
* pygame.image.get\_extended() — 檢測是否支持載入擴展的圖像格式
* pygame.image.tostring() — 將圖像轉換為字符串描述
* pygame.image.fromstring() — 將字符串描述轉換為圖像
* pygame.image.frombuffer() — 創建一個與字符串描述共享數據的 Surface 對象
image 模塊包含了加載和保存圖像的函數,同時轉換為 Surface 對象支持的格式。
注意:沒有 Image 類;當一個圖像被成功載入后,將轉換為 Surface 對象。Surface 對象允許你在上邊畫線、設置像素、捕獲區域等。
Image 是 Pygame 相當依賴的一個模塊,支持載入的圖像格式如下:
* JPG
* PNG
* GIF(無動畫)
* BMP
* PCX
* TGA(無壓縮)
* TIF
* LBM(和 PBM)
* PBM(和 PGM,PPM)
* XPM
支持保存為以下格式:
* BMP
* TGA
* PNG
* JPEG
其中,保存為 PNG 和 JPEG 格式是 Pygame 1.8 新增加的。
## **函數詳解**
### **pygame.image.load()**
從文件加載新圖片。
load(filename) -> Surface
load(fileobj, namehint=””) -> Surface
從文件加載一張圖片,你可以傳遞一個文件路徑或一個 Python 的文件對象。
Pygame 將自動判斷圖像的格式(比如 GIF 或位圖)并創建一個新的 Surface 對象。有時它可能需要知道文件的后綴名(比如 GIF 圖像應該以 “.gif” 為后綴)。如果你傳入原始文件對象,你需要傳入它對應的文件名到 namehint 參數中。
返回的 Surface 對象將包含與源文件相同的顏色格式,colorkey 和 alpha 透明度通道。你通常需要調用 Surface.convert() 函數進行轉換,這樣可以使得在屏幕上繪制的速度更快。
對于含有 alpha 通道的圖片(支持部分位置透明,像 PNG 圖像),需要使用 Surface.convert\_alpha() 函數進行轉換。
在某些環境下,Pygame 可能無法支持上述所有的圖像格式,但至少無壓縮的 BMP 格式是支持的。你可以調用 pygame.image.get\_extended() 函數,如果返回 True,說明可以加載上述的格式(包含 PNG,JPG 和 GIF)。
你應該使用 os.path.join() 提高代碼的兼容性:
~~~
asurf = pygame.image.load(os.path.join('data', 'Python.png'))
~~~
### **pygame.image.save()**
將圖像保存到磁盤上。
save(Surface, filename) -> None
該函數將保存 Surface 對象到磁盤上,支持存儲為 BMP,TGA,PNG 或 JPEG 格式的圖像。如果 filename 沒有指定后綴名,那么默認是保存為 TGA 格式。TGA 和 BMP 格式是無壓縮的文件。
保存為 PNG 和 JPEG 格式是 Pygame 1.8 新增的。
### **pygame.image.get\_extended()**
檢測是否支持載入擴展的圖像格式。
get\_extended() -> bool
如果 Pygame 支持上述所有的擴展圖像格式,則返回 True。
### **pygame.image.tostring()**
將圖像轉換為字符串描述。
tostring(Surface, format, flipped=False) -> string
將圖像轉換為一個字符串描述,可以被 Python 的其他圖像模塊通過 “fromstring” 轉換回圖像。一些 Python 圖像模塊喜歡“自下而上”的存儲格式(例如 PyOpenGL)。如果 flipped 參數為 True,那么字符串將會垂直翻轉以適用這類圖像模塊。
format 參數可以是下表中任何一個字符串。注意:只有 8 位的 Surface 對象可以使用 “P” 格式。其他格式可以用于任何 Surface 對象上。
| **字符串** | **含義** |
| --- | --- |
| P | 8 位調色板的 Surface 對象 |
| RGB | 24 位圖像 |
| RGBX | 32 位圖像,不留空白 |
| RGBA | 32 位圖像,帶 alpha 通道 |
| ARGB | 32 位圖像,帶 alpha 通道,并將 alpha 放在前邊 |
| RGBA\_PREMULT | 32 位圖像,通過 alpha 通道縮放 |
| ARGB\_PREMULT | 32 位圖像,通過 alpha 通道縮放,并將 alpha 放在前邊 |
### **pygame.image.fromstring()**
將字符串描述轉換為圖像。
fromstring(string, size, format, flipped=False) -> Surface
該函數的使用跟 pygame.image.tostring() 相似。size 參數是一對表示寬度和高度的數字。一旦新的 Surface 對象創建成功,你就可以刪除字符串描述。
size 和 format 參數指定的數據需要跟字符串描述相符,否則將拋出異常。
更快地將圖片轉換到 Pygame,請參考 pygame.image.frombuffer() 函數。
### **pygame.image.frombuffer()**
創建一個與字符串描述共享數據的 Surface 對象。
frombuffer(string, size, format) -> Surface
創建一個新的 Surface 對象,與字符串描述直接共享像素數據。該函數的使用跟 pygame.image.fromstring() 類似,但沒法垂直翻轉原始數據。
該函數的速度會比 pygame.image.fromstring() 快很多,因為該函數不需要申請和拷貝任何像素數據。
- 一、Python基礎
- 1. 序言
- 1.1 Python簡介
- 1.2 安裝和使用IDE
- 1.3 語言特性和基礎概念
- 2. 基本數據類型
- 2.2 字符串型
- 2.2.2 ASCII簡介
- 2.2.4 字符串常用函數
- 3. 條件分支
- 3.3 閑聊條件判斷和運算符優先級
- 10.正則表達式
- 【降龍十八章】Python小技巧
- 18.1 學習網址
- 18.2 PIP切換源
- 18.3 使用whl來安裝
- 【工具優化】IDE優化技巧
- Anaconda
- Jupyter Notebook 的 Markdown 添加大綱
- Jupyter Notebook中圖片縮放和居左
- Anaconda設置環境變量
- Pycharm
- PyCharm新建文檔配置
- 設置字體和字號
- 設置主題和字體配色
- 保存和導入配置
- 設置對選擇內容自動添加引號
- 推薦安裝的插件
- Markdown
- 表格格式
- 二、Python進階
- copy和deepcopy
- 《零基礎入門學習 Python 》【小甲魚版】
- 001.和Python的第一次接觸+習題復習
- 002.用Python設計的第一個游戲 +習題復習
- Pygame詳解
- Pygame詳解:前言
- Pygame詳解(一):Color類
- Pygame詳解(二):display 模塊
- Pygame詳解(三):draw 模塊
- Pygame詳解(四):event 模塊
- Pygame詳解(五):font 模塊
- Pygame詳解(六):image 模塊
- Pygame詳解(七):key 模塊
- Pygame詳解(八):locals 模塊
- Pygame詳解(九):mixer 模塊
- Pygame詳解(十):mouse 模塊
- Pygame詳解(十一):Rect 對象
- Pygame詳解(十二):Surface 對象
- Pygame詳解(十三):time 模塊
- Pygame詳解(十四):music 模塊
- Pygame詳解(十五):pygame 模塊
- Pygame詳解(十六):cursors 模塊
- Pygame詳解(十七):joystick 模塊
- Pygame詳解(十八):mask 模塊
- Pygame詳解(二十一):BufferProxy 對象
- Pygame詳解(二十三):gfxdraw 模塊
- Pygame詳解(二十五):Overlay 對象
- Pygame詳解(二十八):sndarray 模塊
- Pygame詳解(三十一):camera 模塊
- Pygame詳解(三十二):cdrom 模塊
- Pygame詳解(三十六):version 模塊
- pygame rect相關知識
- Tkinter詳解
- Tkinter 組件詳解(一):Label
- Tkinter 組件詳解(二):Button