C++如何获取桌面分辨率大小

C++如何获取桌面分辨率大小,第1张

你在dos命令窗直接打命令:

wmic

desktopmonitor

get

screenwidth,

screenheight

就有分辨率了,例如,显示:

screenheight

screenwidth

768

1024

写c/c++程序,可以用:

system("wmic

desktopmonitor

get

screenwidth,

screenheight");

大小和窗口一致

--

这是平时说的full-screen

(满频)。程序里需要计算和安排的。

有这样一个二进制文件,大小在100M左右,里面存放了多张JPG,文件格式如下:

无关数据

JPG数据区

无关数据区

JPG数据区

无关数据区

JPG数据区

已知JPG起始标志为:“FF D8 FF E0 00 10 4A”,结束标志为:“FF D9”。

现想把这些JPG数据从该文件中读出来,生成一个个单独的文件,该如何做呢?

帮你写了个程序, 测试了只含有一个信息的文件

int len=0;

int filesn=0;

void ReadJpg(CFile sfp,const char dstfile,unsigned char a,unsigned char b)

{

CFile nf;

nfOpen(dstfile,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);

unsigned t=0,t1=0;

nfWrite(&a,sizeof(char));

nfWrite(&b,sizeof(char));

while(1)

{

sfp->Read(&t,sizeof(char));

len++;

nfWrite(&t,sizeof(char));

if(t==0xFF)

{

sfp->Read(&t1,sizeof(char));

len++;

if(t1==0xD9)

break;

else

nfWrite(&t1,sizeof(char));

}

}

nfClose();

}

调用:

void test()

{

CFile fp;

fpOpen("86b05621jpg",CFile::modeRead|CFile::typeBinary);//文件名改一下

unsigned char a=0,b=0;

len=0;

while(1)

{

fpRead(&a,sizeof(char));

len++;

if(len>=fpGetLength())

break;

if(a==0xFF)

{

fpRead(&b,sizeof(char));

len++;

if(b==0xD8)

{

filesn++;

char filename[256];

sprintf(filename,"Jpg %djpg",filesn);

ReadJpg(&fp,filename,a,b);

}

}

}

fpClose();

}

思路是,先得到FF的值,然后再判断下一位是否是0xD8, 但这里要说明一下,如果你的其它数据信息里也含有FF D8值的话就会出错了, 所以为保险起见,应该再多比较几位, JPG的头是固定的,再往下就是EF E0 00 1E, 建议楼主再往下比较四位比较保险(在程序中稍作修改即可)

你是不是在 分析某个 游戏的或程序的资源文件呀,如果是的话,这个资源文件应该配有一个 索引文件!或在其文件自身。索引可以列表索引,链表形示……

如果是你自已生成的文件包,最好加上索引,因为这样可以提高效率!

原型:

char WINAPI icePub_getBufferFromImg2(char strImgFilename,int width,int height,int huiGrade)

输入:strImgFilename 文件名

huiGrade 图像灰度化标志,0 no; >1 and <=256 灰度级

输出:width 图像宽度

height 图像高度

返回值:图像的点阵数据(按照24位BMP格式)

extern "C"

{

__declspec(dllexport)

char WINAPI icePub_getBufferFromImg2(char strImgFilename,int width,int height,int huiGrade);

}

#pragma comment(lib,"icePubDlllib")

char bmpBuffer=NULL;

int imgWidth, imgHeight;

bmpBuffer = icePub_getBufferFromImg2 ("e:\\apng",&imgWidth,&imgHeight,0);

//然后对bmpBuffer数据处理即可

if(bmpBuffer != NULL)

free(bmpBuffer);

可以很明确的说,js无法得知没有标示的img标签的原图的大小。即使是onload完后得到的也只是的显示大小而已,所以你在保存的时候就需要把原图的大小写到img标签上,比如知乎的原图规则:

<img src=">

var _w = parseInt($(window)width());//获取浏览器的宽度

$("new_mess_c img")each(function(i){

var img = $(this);

var realWidth;//真实的宽度

var realHeight;//真实的高度

//这里做下说明,$("<img/>")这里是创建一个临时的img标签,类似js创建一个new Image()对象!

$("<img/>")attr("src", $(img)attr("src"))load(function() {

/

如果要获取的真实的宽度和高度有三点必须注意

1、需要创建一个image对象:如这里的$("<img/>")

2、指定的src路径

3、一定要在加载完成后执行如load()函数里执行

/

realWidth = thiswidth;

realHeight = thisheight;

//如果真实的宽度大于浏览器的宽度就按照100%显示

if(realWidth>=_w){

$(img)css("width","100%")css("height","auto");

}

else{//如果小于浏览器的宽度按照原尺寸显示

$(img)css("width",realWidth+'px')css("height",realHeight+'px');

}

});

});

以上就是关于C++如何获取桌面分辨率大小全部的内容,包括:C++如何获取桌面分辨率大小、用c语言如何读取和保存jpg图片文件、使用API获取PNG图片大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9766125.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存