sdl2.0 如何才能实现截图功能?如何才能把界面内容保存我图片
sdl吧
全部回复
仅看楼主
level 1
符华阳 楼主
用的sdl2.0 做一个播放器,我想实现鼠标在播放器上画一个矩形,然后保存矩形里面的内容为一张bmp图片。
分三步走:
1 是获取播放器窗口显示内容 SDL_Surface* savSur = SDL_GetWindowSurface(m_pWindow);
2 是计算区域进行剪切
3 保存 SDL_SaveBMP(savSur, "D:/save.bmp");
目前就是我直接获取窗口内容然后保存,保存的是一张全黑的图片。就是感觉没有内容一样。请问怎么获取一个有效的SDL_Surface进行保存。或者是如何把渲染器 转换为SDL_Surface。我找了很久没有找到对应的函数。谢谢。
2017年07月10日 06点07分 1
level 12
有一个函数可以获取的,查查官网
2017年07月11日 03点07分 2
level 12
好像是renderreadpixel
2017年07月11日 03点07分 3
确实查到了有这个函数,SDL_RenderReadPixels 获取的是像素数据,不能转为纹理和表面。
2017年07月12日 02点07分
level 5
这个贴吧有,你翻翻
2017年07月11日 10点07分 4
[呵呵]翻到了一个2014年的他给的地址链接失效了。
2017年07月12日 02点07分
level 13
你有没有先进行渲染?
这个我倒是用的不太多
2017年07月12日 01点07分 5
SDL_RenderCopy(m_pRenderer, m_VideoTex, NULL, NULL); SDL_RenderPresent(m_pRenderer); SDL_Surface* savSur = SDL_GetWindowSurface(m_pWindow); SDL_SaveBMP(savSur, "D:/save.bmp"); SDL_Delay(40);
2017年07月12日 02点07分
@符华阳 你可以先使用IMG_Load()创建一个SDL_Surface,然后直接SDL_SaveBMP保存,看能不能成功,然后再看看问题出在哪里。另外好像有SDL_SavePNG,这个是可以用SDL_Texture的,好像有
2017年07月12日 04点07分
@小牛_牛sky 加载的图片然后把surface保存为bmp是没有问题的。还有SDL_Image 里的SavePNG 我下载的这个库只支持surface。应该都一样只支持surfce吧我觉得SDL_RenderReadPixels读出像素点信息来保存应该是可行的(我调试时候看了有数据)只是我对图像这块不熟悉不知道怎么去保存。
2017年07月13日 01点07分
回复 符华阳 :在你保存前有没有SDL_RenderClear()的操作。这个函数是会清空画布的
2017年07月13日 06点07分
level 1
符华阳 楼主
SDL_UpdateYUVTexture(...);
m_VideoTex = pTexture;
SDL_RenderClear(m_pRenderer);
SDL_RenderCopy(m_pRenderer, m_VideoTex, NULL, NULL);
SDL_RenderPresent(m_pRenderer);
SDL_Surface* savSur = SDL_GetWindowSurface(m_pWindow);
SDL_SaveBMP(savSur, "D:/save.bmp");
SDL_Delay(40);
有渲染的,为了保证有数据就是在关键帧的时候进行了 SDL_GetWindowSurface 即使这样也没有数据。保存的图片是黑色的
2017年07月12日 02点07分 6
level 1
符华阳 楼主
问题能解决了;
感谢savage200提供的函数SDL_RenderReadPixels。
我的办法:
1 根据剪切矩形创建一个surface; SDL_CreateRGBSurface
2 用SDL_RenderReadPixels获取像素数据(这里要把剪切矩形SDL_RECT传进去)
3 SDL_SaveBMP保存图片
就能实现视频界面剪切一部分保存为图片了;剪切矩形实在sdl事件里面获取鼠标事件完成的;
2017年07月13日 07点07分 7
level 1
符华阳 楼主
左边就是视频;绿色框是截图区域,右边图片就是截图保存的图片
2017年07月13日 07点07分 8
楼主能不能发个程序,[email protected]
2017年07月17日 09点07分
刚入门 不太懂,谢谢!
2017年07月17日 09点07分
@与梦何干LZ3 我也是刚用这个,代码贴下面了这里能回复字数太少了。
2017年07月18日 02点07分
@与梦何干LZ3 我回帖@你了,然后别系统删掉了
2017年07月18日 02点07分
level 13
不错不错,给个精,方便以后给别人解答。
2017年07月14日 07点07分 9
[爱心]
2017年07月17日 01点07分
level 12
。。。
2017年07月14日 10点07分 10
level 12
看官网都会
2017年07月14日 10点07分 11
自学很多时候看不到关键的地方。
2017年07月17日 01点07分
level 1
符华阳 楼主
帖的代码被系统删了我截图试试
2017年07月18日 05点07分 18
1