2013-08-02 57 views
1

我試圖從C中的libpng可以是灰度(8bits * 1componant)或rgb(8bits * 3componants)的圖像寫入PNG文件。用libpng在灰度或RGB中寫入PNG

我閱讀手冊,並寫了一段代碼,不工作: -/

/* writing the image */ 
png_byte *row_pointers[img->height]; 
int h; 
for (h = 0 ; h < img->height ; h++) 
{ 
    row_pointers[h] = img->data+h*img->width*image_components; 
} 
png_write_image(png_ptr, row_pointers); 

沒有寫入形象,我不明白爲什麼。

img.data指向圖像DATAS(RGB格式的情況下,隔行掃描)

回答

1

文檔說,你應該使用png_write_end,請參閱http://www.libpng.org/pub/png/libpng-1.2.5-manual.html「完成連續寫」一節。 有很多的例子在那裏(如http://zarb.org/~gc/html/libpng.html

+0

當我使用它,除了空的PNG文件,我有這樣的錯誤'libpng的錯誤:沒有寫進file' – Jav

+0

IDATs如果你直接使用: png_write_png(png_ptr,info_ptr,PNG_TRANSFORM_IDENTITY,NULL); 取而代之?它適用於我,並且在使用png_write_image和png_write_end時能夠複製您的錯誤。不過我也用的例子(如創建info_ptr內容,png_set_IHDR,...)之前運行等功能。 – Emilien