0
FILE *PNGFile;
png_structp PngPtr = NULL;
png_infop InfoPtr = NULL;
PNGFile = fopen(sFileName, "wb");
PngPtr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
NULL, NULL, NULL);
InfoPtr = png_create_info_struct(PngPtr);
png_init_io(PngPtr, PNGFile);
png_set_IHDR(PngPtr, InfoPtr, nWidth, nHeight, NumBits, PNG_COLOR_TYPE_PALETTE,
PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
png_set_PLTE(PngPtr, InfoPtr, PNGColor, NumColors); //NumColors = 256
png_color_16 BGColor[1];
png_byte TrnsColor[1];
BGColor[0].index = 0;
TrnsColor[0] = 100; //0 = transparent , 255 = opaque
png_set_tRNS(PngPtr, InfoPtr, TrnsColor, 1, BGColor);
png_write_info(PngPtr, InfoPtr);
.......
........ //intialized image pixels
png_write_image(PngPtr, PixelData);
png_write_end(PngPtr, InfoPtr);
使用上面的代码,我能保存图像,但我没能看到透明度,这是使用“png_set_tRNS(PngPtr,InfoPtr,TrnsColor,1套像素, BGCOLOR)”。png_set_tRNS不工作了libpng
当我使用png_get_tRNS方法读取已保存图像的tRNS块时,我可以获取已设置的值,但是在使用某些图像查看应用程序打开它时无法看到透明度。
我在代码中丢失了什么吗?
谢谢你@ GlennRanders-Pehrson我为wronng索引设置了alpha值 – 2014-10-30 04:42:08
我将两条评论转换为答案。 – 2015-07-08 22:26:53