Pixels 類別提供對原始影像像素的有效存取。 影像像素(類型為 Quantum) 可以透過 影像像素快取 直接存取。 影像像素快取是實際影像像素(可能位於記憶體中、從磁碟檔案記憶體映射或完全位於磁碟上)的矩形視窗(檢視)。 透過 get() 取得現有的影像像素。 使用 set() 建立新的像素區域。
根據作業系統的功能以及視窗與影像的關係,像素快取可能是所選取視窗中像素的副本,也可能是實際的影像像素。 無論如何,呼叫 sync() 可確保使用已修改像素快取的內容更新基礎影像。 decode() 方法支援根據 QuantumTypes 將外部像素資料格式複製到像素快取中。 encode() 方法支援根據 QuantumTypes 指定的格式將快取中的像素複製到外部像素表示法。
使用 Pixels 類別設定檢視不會導致對基礎影像的參考次數減少為一。 因此,為了確保只修改最新一代的影像,應呼叫影像的 modifyImage() 方法,將基礎影像的參考計數減少為一。 如果未完成此操作,則由於在複製或建構影像時使用參考計數,可能會修改先前版本的影像。
set 和 get 方法傳回的 Quantum* 以及 indexes 方法傳回的 void* 指向由 Pixels 類別管理的像素資料。 Pixels 類別負責釋放與像素檢視相關聯的資源。 這表示永遠不應將指標傳遞給 delete() 或 free()。
像素檢視是一個小型影像,可以在其中存取、定址和更新像素,如下列範例所示,該範例產生類似於右側的影像(減去線條和文字)
Pixels 支援下列方法
像素快取方法
方法 |
傳回值 |
簽章 |
說明 |
const ssize_t x_, const ssize_t y_, const size_t columns_, const size_t rows_ |
將圖像中由指定矩形區域定義的讀寫像素傳輸到像素緩存。修改後的像素隨後可以通過 *sync* 傳輸回圖像。 返回值僅供像素訪問使用。它永遠不應該被釋放。 |
||
const Quantum* |
const ssize_t x_, const ssize_t y_, const size_t columns_, const size_t rows_ |
將圖像中由指定矩形區域定義的唯讀像素傳輸到像素緩存。 |
|
const ssize_t x_, const ssize_t y_, const size_t columns_, const size_t rows_ |
分配一個像素緩存區域來存儲由區域矩形定義的圖像像素。 該區域隨後通過 *sync* 從像素緩存傳輸到圖像。 返回值僅供像素訪問使用。它永遠不應該被釋放。 |
||
void |
void |
將圖像緩存像素傳輸到圖像。 |
|
void* |
void |
返回與最後一次 get、getConst 或 set 調用定義的像素區域相對應的偽彩色像素索引。僅對偽彩色和 CMYKA 圖像有效。像素索引(類型為 *void* 的數組,typedef 為 *Quantum*,它本身 typedef 為 *unsigned char* 或 *unsigned short*,具體取決於 *QuantumDepth* 定義的值)提供了圖像中每個像素的顏色表索引(請參閱 colorMap)。對於 CMYKA 圖像,索引代表黑色通道。 返回值僅供像素訪問使用。它永遠不應該被釋放。 |
|
int |
void |
視圖的左縱坐標 |
|
int |
void |
視圖的上縱坐標 |
|
size_t |
void |
視圖的寬度 |
|
size_t |
void |
視圖的高度 |