该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/*获取当前SVGA屏幕模式*/

unsigned int get_SVGA_mode()

{

union REGS r;

r.x.ax=0x4f03;

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

return(r.x.bx);

}

/*设置调色板*/

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; /* 每行字节数--4的整数倍 */

if (fread((char *)&bmiColors[0], 4, 256, fp) != 256) { /* 读调色板数据 */

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

return;

}

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

set_SVGA_mode(0x101); /*硬件无关性初始化屏幕为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); /* 设置调色板 */

offset = FileHeader.bfOffBits;

fseek(fp, offset, SEEK_SET); /* 跳到位图数据的起始位置 */

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

fread(buffer,linebytes,1,fp);

for(i=0,n=0;i

position=j*(long)COLS+i; /*计算要显示点的显存位置*/

page_new=position/65536l; /*计算显示页*/

if(page_new!=page_old) /*当显示页不同时更换页面,提高一定的输出速度*/

{

selectpage(page_new);

page_old=page_new;

}

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

}

}

fclose(fp);

bioskey(0);

set_SVGA_mode(savemode); /*恢复屏幕*/

}

c语言坐标输出图片,tc 如何在指定坐标处 输出bmp图片??相关推荐

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

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*获取当前SVGA屏幕模式*/ unsigned int get_SVGA_mode() { union REGS r; r.x.ax=0x4f03; ...

  2. c语言如何在坐标输出,tc 如何在指定坐标处 输出bmp图片??

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*获取当前SVGA屏幕模式*/ unsigned int get_SVGA_mode() { union REGS r; r.x.ax=0x4f03; ...

  3. 根据txt文件中保存的图片名字,移动指定文件夹里的图片到新的文件夹

    在将voc数据集转化为coco数据集时,需要把JPEGImages文件夹下的图片按照train.txt(val.txt)所保存的文件名转移到train(val)文件夹. import shutil i ...

  4. 基于ZYNQ的网页上传BMP图片至HDMI端口输出实例

    目录 Change Log 0 前言 0.1 系统实现 0.2 源码下载 0.3 项目信息 1 ZYNQ开发板HDMI输出BMP图片功能:FPGA相关 1.1 系统框图 1.2 RTL图 1.3 Bl ...

  5. C语言编程: 在BMP图片上添加图片水印

    一.运行环境介绍 Linux系统: Redhat6.3 (32位) gcc 版本 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) 二.功能介绍 创建一张BMP图片,将图片 ...

  6. 使用C++实现多张BMP图片转换为YUV动画----附加淡入淡出转场(逐渐变明变暗),及垂直滑像转场(逐行渐变)

    使用C++实现多张BMP图片转换为YUV动画----附加淡入淡出转场(逐渐变明变暗),及垂直滑像转场(逐行渐变) 一.BMP图像简介 1.BMP图像是什么? 2.BMP图像文件结构 1)图象文件头 2 ...

  7. 【Android SDM660源码分析】- 03 - UEFI XBL GraphicsOutput BMP图片显示流程

    [Android SDM660源码分析]- 03 - UEFI XBL GraphicsOutput BMP图片显示流程 1. GraphicsOutput.h 2. 显示驱动初化 DisplayDx ...

  8. C应用 -BMP图片存储格式及生成

    文章目录 前言 准备工作 存储形式 位图头文件信息 位图信息头 调色板 位图数据 实现 最简版本 结构体实现 应用 画圆 改进 生成彩虹 参考鸣谢 前言 由于工作需要,最近在折腾一个工业相机,在提供的 ...

  9. 纯色bmp图片生成的效率

    各种编程语言生成纯色bmp图片的效率 之前使用了各种语言生成纯色bmp图片,这里汇总并对比下纯色bmp图片文件生成的效率. 主要指标是完成bmp文件生成的耗时时长. 为了公平客观的对比,通过linux ...

最新文章

  1. 论文阅读--PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection
  2. “cannot resolve symbol R” in Android Studio
  3. 拔河原理html,大班活动拔河活动教案
  4. tomcat学习笔记(JDK+TOMCAT+AXIS)
  5. 冰雪奇缘,白色世界:四个IT人的四姑娘山双桥沟游记
  6. 这些迹象表明公司即将裁员
  7. windows快速关闭有效方法2则
  8. 经典线程同步 互斥量Mutex的使用分析
  9. 暴增14倍!这家港股最大基金公司,1年净利20亿,竟是因为这个!
  10. 《Android游戏编程之从零开始》
  11. Wke阅读日记1--简介
  12. 联想计算机不能使用ghost,如何解决联想台式机不能重装系统
  13. 003-电脑软件系统保护
  14. 免费微信登陆界面html模板,微信小程序:使用微信授权登录以及页面模板
  15. 无根树(无环连通无向图)的Prufer编码
  16. html 消息滚动,以HTML实现消息滚动
  17. 基于Go语言GoFrame+Layui搭建MVC项目教程
  18. Ch11. Threads 线程
  19. arista 交换机镜像端口配置(将某一端口的数据转发到指定端口)
  20. 复旦大学邱锡鹏:若优化顺利,MOSS三月底开源;库克或被踢出苹果董事会;华为云联合CSDN发布智能化编程助手Snap|极客头条

热门文章

  1. 复选框 全选 全不选 反选 实现
  2. [网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
  3. Git之签署工具GPG的安装和使用
  4. LeetCode Algorithm 160. 相交链表
  5. Jeson nano + 思岚激光雷达rplidar_s1 + ubuntu18.04
  6. 【STM32】FreeRTOS列表和列表项详解
  7. 【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析
  8. 二维数组 赋值_3.9数组(数组基本使用、数组的循环、数组拷贝、数组排序、多维数组)...
  9. 每天一道LeetCode-----顺时针旋转n×n矩阵90度
  10. 学习笔记-----关于VS中使用模板类出现无法解析的外部符号问题