将png图像数据格式转换成jpg数据格式,如何转换? 希望能有注释的源代码,还希望解释一下原理,并有个demo。 使用linpng库和zlib库以及libjpeg库。用C++/C写,平台是VS2010
2条回答 默认 最新
- yanhui8610 2017-07-18 07:49关注
#pragma comment(lib,"user32") #pragma comment(lib,"gdi32") #include <stdlib.h> #include <stdio.h> #include <io.h> #include <conio.h> #include <windows.h> #include <atlimage.h> #include <objidl.h> void DrawPic(HDC hdc,char *buf,int len) { HGLOBAL hMem=GlobalAlloc(GMEM_FIXED,len); BYTE* pMem=(BYTE*)GlobalLock(hMem); memcpy(pMem,buf,len); IStream* pStream; HRESULT hr=CreateStreamOnHGlobal(pMem,FALSE,&pStream); CImage img; img.Load(pStream); img.Draw(hdc,CPoint(0,0)); img.Destroy(); pStream->Release(); GlobalUnlock(hMem); GlobalFree(hMem); } //HWND WINAPI GetConsoleWindow(); void HideTheCursor() { CONSOLE_CURSOR_INFO cciCursor; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); if (GetConsoleCursorInfo(hStdOut, &cciCursor)) { cciCursor.bVisible = FALSE; SetConsoleCursorInfo(hStdOut, &cciCursor); } } void ShowTheCursor() { CONSOLE_CURSOR_INFO cciCursor; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); if (GetConsoleCursorInfo(hStdOut, &cciCursor)) { cciCursor.bVisible = TRUE; SetConsoleCursorInfo(hStdOut, &cciCursor); } } int main() { HWND hwnd; HDC hdc; HFONT hfont; HBITMAP hbm; HDC hdcBits; BITMAP bm; system("color F0"); system("cls"); HideTheCursor(); hwnd = GetConsoleWindow(); hdc = GetDC(hwnd); hfont = CreateFont(48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "华文楷体"); SelectObject(hdc,hfont); TextOut(hdc,10,10,"这是泡泡",8); DeleteObject(hfont); hbm=(HBITMAP)LoadImage(0,"C:\\Windows\\Soap Bubbles.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE); if (hbm) { hdcBits = CreateCompatibleDC(hdc); GetObject (hbm, sizeof(BITMAP), &bm); SelectObject(hdcBits,hbm); BitBlt(hdc,200,10,bm.bmWidth, bm.bmHeight,hdcBits,0,0,SRCCOPY); DeleteDC(hdcBits); DeleteObject(hbm); } getch(); FILE *f; f=fopen("c:\\new\\tmp.jpg","rb"); if (f) { int fl=filelength(fileno(f)); char *buf=(char *)malloc(fl); if (buf) { fread(buf,fl,1,f); } fclose(f); if (buf) { DrawPic(hdc,buf,fl); free(buf); } } ReleaseDC(hwnd,hdc); getch(); system("color 07"); system("cls"); ShowTheCursor(); return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 求解 yolo算法问题
- ¥15 虚拟机打包apk出现错误
- ¥30 最小化遗憾贪心算法上界
- ¥15 用visual studi code完成html页面
- ¥15 聚类分析或者python进行数据分析
- ¥15 三菱伺服电机按启动按钮有使能但不动作
- ¥15 js,页面2返回页面1时定位进入的设备
- ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
- ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
- ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝