日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 读取png图片,linux 下 OpenGL 读取 JPG, PNG, TAG 纹理数据

發布時間:2023/12/15 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 读取png图片,linux 下 OpenGL 读取 JPG, PNG, TAG 纹理数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實際讀取圖片的代碼已經上傳到我的資源里面; 下面貼出使用例子(代碼不嚴謹,湊合看):

unsigned char*? esLoadJPG(const char *fileName, int *width, int *height, int *size) { ??? FILE *f = fopen(fileName, "rb"); ??? fseek(f, 0, SEEK_END); ??? *size = ftell(f); ??? fseek(f, 0, SEEK_SET); ??? unsigned char *data = (unsigned char*)malloc(*size); ??? fread(data, 1, *size, f); ??? JpegDecoder dec(data, *size); ??? dec.init(); ??? dec.decodeJpeg(); ??? *width = dec.getW(); ??? *height = dec.getH(); ??? *size = dec.getSize(); ??? unsigned char *buffer = (unsigned char*)malloc(*size); ??? memcpy(buffer, dec.getbmpData(), *size); ??? return buffer; } unsigned char*? esLoadTGA (const char *fileName, int *width, int *height, int *size) { ??? unsigned char *buffer = NULL; ??? FILE *f; ??? unsigned char tgaheader[12]; ??? unsigned char attributes[6]; ??? unsigned int imagesize; ??? f = fopen(fileName, "rb"); ??? if(f == NULL) return NULL; ??? if(fread(&tgaheader, sizeof(tgaheader), 1, f) == 0) ??? { ??????? fclose(f); ??????? return NULL; ??? } ??? if(fread(attributes, sizeof(attributes), 1, f) == 0) ??? { ??????? fclose(f); ??????? return 0; ??? } ??? *width = attributes[1] * 256 + attributes[0]; ??? *height = attributes[3] * 256 + attributes[2]; ??? imagesize = attributes[4] / 8 * *width * *height; ??? *size = imagesize; ??? buffer = (unsigned char*)malloc(imagesize); ??? if (buffer == NULL) ??? { ??????? fclose(f); ??????? return 0; ??? } ??? if(fread(buffer, 1, imagesize, f) != imagesize) ??? { ??????? free(buffer); ??????? return NULL; ??? } ??? fclose(f); ??? return buffer; } unsigned char*? esLoadPNG ( const char *fileName, int *width, int *height, int *size) { ??? FILE *f = fopen(fileName, "rb"); ??? fseek(f, 0, SEEK_END); ??? *size = ftell(f); ??? fseek(f, 0, SEEK_SET); ??? unsigned char *data = (unsigned char*)malloc(*size); ??? fread(data, 1, *size, f); ??? PngDecoder dec(data, *size); ??? dec.init(); ??? dec.decoderPng(); ??? *width = dec.getW(); ??? *height = dec.getH(); ??? *size = dec.getSize(); ??? unsigned char *buffer = (unsigned char*)malloc(*size); ??? memcpy(buffer, dec.getbmpData(), *size); ??? return buffer; }

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的linux 读取png图片,linux 下 OpenGL 读取 JPG, PNG, TAG 纹理数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。