c语言截图代码,截图代码 哪位大神帮我找一下错,截出来的图是这样子的
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
終于找到了,前段時(shí)間研究jpg的時(shí)候,順便做的一個(gè)實(shí)驗(yàn),直接輸出bmp文件。參考了微軟的一個(gè)很老的代碼里的字節(jié)對齊。。但愿對你有幫助吧。
#include
#include
// showdib.h 157行,字節(jié)對齊
#define WIDTHBYTES(i) ((i+31)/32*4)
int main()
{
BITMAPINFOHEADER bi;
memset(&bi, 0, sizeof(BITMAPINFOHEADER));
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = 25;
bi.biHeight = 25;
bi.biPlanes = 1;
bi.biBitCount = 24;
bi.biClrUsed = 0;
bi.biClrImportant = 0;
bi.biCompression = BI_RGB;
DWORD img_size = (DWORD)WIDTHBYTES(bi.biWidth * bi.biBitCount) * bi.biHeight;
BITMAPFILEHEADER bmfh;
bmfh.bfType = 0x4d42;
bmfh.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + img_size;
bmfh.bfReserved1 = 0; // must be 0
bmfh.bfReserved2 = 0;
bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
unsigned char *img_data = new unsigned char[img_size];
unsigned char *p = img_data;
for(int i = 0; i < bi.biHeight; i++)
{
p += WIDTHBYTES(bi.biWidth*bi.biBitCount);
for(int j = 0; j < bi.biWidth * 3; j+=3)
{
*(p+j) = 0;//B
*(p+j+1) = 0;//G
*(p+j+2) = 255; //R
}
}
/// 神奇,居然寫成功了。
FILE *fp = fopen("y.bmp", "wb");
fwrite(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fwrite(&bi, sizeof(BITMAPINFOHEADER), 1, fp);
fwrite(img_data, img_size, 1, fp);
fclose(fp);
delete[] img_data;
}
輸出一個(gè)25*25紅色的bmp文件,大至關(guān)鍵點(diǎn)有三個(gè),第一,是以二進(jìn)制方式寫,第二,像素點(diǎn)寫入順序是BGR,也就是綠蘭紅,第三就是那個(gè)字節(jié)對齊問題。僅供你參考。
總結(jié)
以上是生活随笔為你收集整理的c语言截图代码,截图代码 哪位大神帮我找一下错,截出来的图是这样子的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中argument函数_Py
- 下一篇: java mvc数据库 封装_关于Spr