小编Sin*_*nür的帖子

如何截取屏幕截图并将其保存为Windows上的JPEG?

我试图找到一种(有点)简单的方法来在窗口上截取屏幕截图并将生成的HBITMAP保存为JPEG.这里棘手的部分是,因为代码在CI中不能使用GDI +,并且由于代码是更大程序的模块,我不能使用外部库(如libjpeg).

此代码截取屏幕截图并返回HBITMAP.将该位图保存到文件中很容易.问题是位图是2或3mb.

HDC hDCMem = CreateCompatibleDC(NULL);
HBITMAP hBmp;
RECT rect;
HDC hDC;
HGDIOBJ hOld;    

GetWindowRect(hWnd, & rect);

hBmp = NULL;

{
    hDC = GetDC(hWnd);
    hBmp = CreateCompatibleBitmap(hDC, rect.right - rect.left, rect.bottom - rect.top);
    ReleaseDC(hWnd, hDC);
}

hOld = SelectObject(hDCMem, hBmp);
SendMessage(hWnd, WM_PRINT, (WPARAM) hDCMem, PRF_CHILDREN | PRF_CLIENT | PRF_ERASEBKGND | PRF_NONCLIENT | PRF_OWNED);

SelectObject(hDCMem, hOld);
DeleteObject(hDCMem);

return hBmp;
Run Code Online (Sandbox Code Playgroud)

关于如何做到这一点的任何想法?非常感谢,任何帮助表示赞赏

编辑:因为我们走向GDI +的方向我想我会发布代码iv C++,可以截取屏幕截图并使用GDI +将其转换为JPEG.如果有人知道如何使用FLAT GDI +实现这一目标我会很感激帮助.码:

    #include <windows.h>
#include <stdio.h>
#include <gdiplus.h>

using namespace Gdiplus;


int GetEncoderClsid(WCHAR *format, CLSID *pClsid) …
Run Code Online (Sandbox Code Playgroud)

c windows jpeg gdi+ screenshot

13
推荐指数
2
解决办法
3万
查看次数

为什么fwrite的写作比我说的要多?

FILE *out=fopen64("text.txt","w+");
unsigned int write;
char *outbuf=new char[write];
//fill outbuf
printf("%i\n",ftello64(out));
fwrite(outbuf,sizeof(char),write,out);
printf("%i\n",write);
printf("%i\n",ftello64(out));
Run Code Online (Sandbox Code Playgroud)

输出:

0
25755
25868
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?write设置为25755,我告诉fwrite将多个字节写入文件,这是在开头,然后我在25755以外的位置?

c file fwrite ftell

13
推荐指数
1
解决办法
1万
查看次数

strcat()vs sprintf()

什么会更快?这个:

sprintf(&str[strlen(str)], "Something");
Run Code Online (Sandbox Code Playgroud)

要么

strcat(str, "Something");
Run Code Online (Sandbox Code Playgroud)

有任何性能差异吗?

c coding-style

13
推荐指数
3
解决办法
1万
查看次数

如何访问Perl哈希的引用计数?

我正在尝试启用脚本的垃圾收集器来做得更好.它应该能够回收大量的内存,但有些东西正在阻止它.

我已经使用了Devel :: Cycle了一下,这让我更近了但是我不在那里.

如何找出Perl哈希的当前引用计数(我的对象的存储)?

有没有办法跟踪谁持有对象的引用?也许是一种领带说,只要有人指出这个对象,就要记住某个人是谁.

perl

13
推荐指数
2
解决办法
1987
查看次数

当我尝试在Windows上运行Perl单线程时,为什么我在"-e第1行的EOF之前的任何地方"找到"找不到字符串终结符"?

我试图在Windows 5.14.2上运行以下

C:\Perl>perl -e 'print "Hello World \n"'
Can't find string terminator "'" anywhere before EOF at -e line 1.

我错过了什么?

windows perl cmd

13
推荐指数
1
解决办法
2万
查看次数

我怎样才能开始使用Perl进行Web开发?

我希望能够为我的Perl程序创建Web前端.我对Perl有很多经验,并且我将大部分代码转换为由Chromatic支持的Modern Perl范例.我有写网页的ZERO经验.(偶尔会出现Word保存为网页).

我相信我知道开始使用哪些工具,我只是难以使用他们的开始文档以及学习工具的顺序.

  • Perl:我都在这里.

  • 舞者:我创建了一个网站,但我很丢失,而cpan文档让我更加困惑.我不知道如何将这些网站与Apache集成,而不是使用Dancer附带的迷你服务器.

  • 模板工具包:这个看起来最直接,我有O'Reilly的书.对于看似简单的东西来说,这似乎是一本非常大的书,所以我知道我错过了一些东西.

  • HTML:我应该学到多少钱?什么是最好的学习路径?

最终,最好的是"使用Perl从头开始构建现代网站"教程,书籍,视频系列或网站.

请问,从哪里开始?

html perl template-toolkit dancer

13
推荐指数
1
解决办法
9577
查看次数

是否有任何用例需要在Perl中使用字符串eval?

你能提供任何eval EXPR真正需要使用的例子吗?我问,因为它一般气馁.

perl eval

12
推荐指数
3
解决办法
686
查看次数

@array在Perl中意味着什么?

我有一些Perl代码,我注意到一个数组与前导反斜杠一样使用 \@array

任何人都可以解释它是什么意思吗?

arrays perl reference

12
推荐指数
2
解决办法
7459
查看次数

Perl有多处理模块吗?

Perl有多处理模块吗?与Python的多处理模块提供的功能类似的东西.

我知道我可以使用Perl构建类似的功能,但我正在寻找已经实现的功能.

perl multithreading multiprocessing

12
推荐指数
2
解决办法
4653
查看次数

如何在任何操作系统上启动Perl中的默认Web浏览器?

我想http://www.example.com/在Perl脚本的末尾打开一个URL,例如.我不想使用WWW :: Mechanize访问它,但实际上是在图形Web浏览器中向用户显示该网页.

有办法在Mac(open URL)和Windows中执行此操作,但我想要一个适用于任何操作系统的解决方案,而不仅仅是一个.

browser url perl default

12
推荐指数
2
解决办法
9584
查看次数