簡體   English   中英

如何從 SFML 中的像素數組加載 sf::Image?

[英]How to load a sf::Image from an array of pixels in SFML?

我想從包含每個像素 (RGB) 3 個值的 2d 數組加載 sfml 中的圖像。 該數組將如下所示:

{
 {{255, 255, 255}, {255, 255, 255}},
 {{255, 255, 255}, {255, 255, 255}}
}

上面的數組描述了一個 2x2 的白色圖像。 如何將其轉換為 sfml ( sf::Image ) 中的sf::Image

如果您想從像素數組創建sf::Image對象,那么您const Uint8 *采用const Uint8 *sf::Image::create()成員函數重載const Uint8 *

void sf::Image::create(unsigned int width, unsigned int height, const Uint8 * pixels);  

顧名思義,最后一個參數pixels對應於您要從中創建sf::Image的像素數組。 請注意,假定此像素陣列采用RGBA格式(這與問題代碼中建議的RGB格式形成對比)。 – ie, a Uint8 for each component: red , green , blue and alpha .也就是說,數組必須保存四個Uint8即,每個組件一個Uint8redgreenbluealpha


例如,考慮以下像素陣列pixels ,由六個像素組成:

const unsigned numPixels = 6;
sf::Uint8 pixels[4 * numPixels] = {
    0,   0,   0,   255, // black
    255, 0,   0,   255, // red
    0,   255, 0,   255, // green
    0,   0,   255, 255, // blue
    255, 255, 255, 255, // white
    128, 128, 128, 255, // gray
};

然后,我們可以從pixels數組創建一個sf::Image對象:

sf::Image image;
image.create(3, 2, pixels);

上面創建的sf::Image的像素將對應於這些:

3x2 圖像

這是一個3x2像素的圖像,但是,翻轉傳遞給sf::Image::create()的圖像的寬度高度參數,如下所示:

sf::Image image;
image.create(2, 3, pixels);

這會產生一個2x3像素的圖像:

3x3 圖像

然而,注意,這兩個sf::Image上述目的是從像素的同一陣列創建的pixels ,並且它們都是由六個像素向上-的像素被布置只是不同,因為這些圖像具有不同的尺寸。 然而,像素是相同的:黑色、紅色、綠色、藍色、白色和灰色像素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM