[英]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
即,每個組件一個Uint8
: red 、 green 、 blue和alpha 。
例如,考慮以下像素陣列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像素的圖像,但是,翻轉傳遞給sf::Image::create()
的圖像的寬度和高度參數,如下所示:
sf::Image image;
image.create(2, 3, pixels);
這會產生一個2x3像素的圖像:
然而,注意,這兩個sf::Image
上述目的是從像素的同一陣列創建的pixels
,並且它們都是由六個像素向上-的像素被布置只是不同,因為這些圖像具有不同的尺寸。 然而,像素是相同的:黑色、紅色、綠色、藍色、白色和灰色像素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.