
你在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图片大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)