讓我們來看看原型和描述png_set_rows
void png_set_rows(png_structp png_ptr,
png_infop info_ptr,
png_bytepp row_pointers);
png_set_rows()就把圖象數據的行插入info_ptr 結構,其中row_pointers是一個指針到像素 陣列每行的數據。
我會假設你已經初始化png_stuctp
傳遞作爲第一個參數,和你有一個空的png_infop
您傳遞的第二個參數。
所以你的問題是作爲第三個參數傳遞什麼。
好吧,讓我們來看看定義png_byte:
typedef unsigned char png_byte;
大,一個png_byte是一個無符號的字符。
現在讓我們來看看定義爲png_bytepp:
typedef png_byte FAR * FAR * png_bytepp;
這是無符號的字符的二維數組。
所以,你所要做的就是創建無符號的字符的二維數組並將其轉換爲png_bytepp:
unsigned int IMAGE_HEIGHT = 720, IMAGE_WIDTH = 1280;
unsigned char row_pointers[IMAGE_HEIGHT][IMAGE_WIDTH];
/* test image initialization */
unsigned int i, j;
for (i = 0; i < IMAGE_HEIGHT; i++) {
for (j = 0; j < IMAGE_WIDTH; j++) {
row_pointers[i][j] = i * j;
}
}
png_set_rows(png_ptr, info_ptr, (png_bytepp)row_pointers);