日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言扫描图片的坐标,tc 如何在指定坐标处 输出bmp图片??

發(fā)布時(shí)間:2024/4/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言扫描图片的坐标,tc 如何在指定坐标处 输出bmp图片?? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓

/*獲取當(dāng)前SVGA屏幕模式*/

unsigned int get_SVGA_mode()

{

union REGS r;

r.x.ax=0x4f03;

int86(0x10,&r,&r);

return(r.x.bx);

}

/*設(shè)置調(diào)色板*/

void set_SVGA_palette(unsigned char r[], unsigned char g[], unsigned char b[])

{

int k;

for (k = 0; k < 256; k++) {

outportb(0x03C8,k);

outportb(0x03C9,r[k]>>2);

outportb(0x03C9,g[k]>>2);

outportb(0x03C9,b[k]>>2);

}

}

void main()

{

BITMAPFILEHEADER FileHeader;

BITMAPINFOHEADER bmiHeader;

RGBQUAD bmiColors[256];

unsigned char buffer[1024], r[256], g[256], b[256];

unsigned int width, height, linebytes;

long offset, position;

char page_new=0,page_old=0;

int i,j,k,n,savemode;

FILE *fp;

printf("Input filename:"); /*輸入要顯示的BMP文件路徑*/

gets(buffer);

if((fp=fopen(buffer,"rb"))==NULL) /*判斷打開文件是否正確*/

{

printf("Can't open file: %s",buffer);

return;

}

if (fread((char *)&FileHeader, sizeof(FileHeader), 1, fp) != 1) {

printf("Can't read file header !\n"); /* 讀文件頭 */

return;

}

if (FileHeader.bfType != 0X4D42) { /* BM */

fprintf(stderr, "Not a BMP file !\n");

return;

}

if (fread((char *)&bmiHeader, sizeof(bmiHeader), 1, fp) != 1) {

fprintf(stderr, "Can't read bmiHeader !\n"); /* 讀信息頭 */

return;

}

if (bmiHeader.biBitCount > 8) { /* 不能顯示真彩色圖像 */

fprintf(stderr, "Can not display ture color image !\n");

return;

}

if (bmiHeader.biCompression != 0) { /* 不能處理壓縮圖像 */

fprintf(stderr, "Not non-compressed image !\n");

return;

}

width = (unsigned int)bmiHeader.biWidth;

height = (unsigned int)bmiHeader.biHeight;

linebytes = ((width*(long)bmiHeader.biBitCount+31)/32)*4; /* 每行字節(jié)數(shù)--4的整數(shù)倍 */

if (fread((char *)&bmiColors[0], 4, 256, fp) != 256) { /* 讀調(diào)色板數(shù)據(jù) */

fprintf(stderr, "Can't get palette !\n");

return;

}

savemode=get_SVGA_mode(); /*先保存原來的屏幕模式*/

set_SVGA_mode(0x101); /*硬件無關(guān)性初始化屏幕為256色640*480模式*/

COLS=640;ROWS=480;

for (i = 0; i < 256; i++) {

r[i] = bmiColors[i].rgbRed;

g[i] = bmiColors[i].rgbGreen;

b[i] = bmiColors[i].rgbBlue;

}

set_SVGA_palette(r, g, b); /* 設(shè)置調(diào)色板 */

offset = FileHeader.bfOffBits;

fseek(fp, offset, SEEK_SET); /* 跳到位圖數(shù)據(jù)的起始位置 */

for(j=height-1;j>=0;j--) {

fread(buffer,linebytes,1,fp);

for(i=0,n=0;i

position=j*(long)COLS+i; /*計(jì)算要顯示點(diǎn)的顯存位置*/

page_new=position/65536l; /*計(jì)算顯示頁*/

if(page_new!=page_old) /*當(dāng)顯示頁不同時(shí)更換頁面,提高一定的輸出速度*/

{

selectpage(page_new);

page_old=page_new;

}

pokeb(0xa000,position%65536l,buffer[n]); /*寫到顯存位置*/

}

}

fclose(fp);

bioskey(0);

set_SVGA_mode(savemode); /*恢復(fù)屏幕*/

}

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的c语言扫描图片的坐标,tc 如何在指定坐标处 输出bmp图片??的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。