CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

菜鸟问题:关于在TC下显示一幅BMP格式的图象~:(

楼主shine04(shine04)2005-04-03 17:53:21 在 C/C++ / C语言 提问

想做一个图象变换来着,但是要先把做变换的图象给显示出来.经过变换之后再把结果也显示出来.对比之.  
  花了一天时间在CSDN上看以前别人发的帖子有了一些概念.但是有很多的困惑.希望各位大虾不吝赐教哦^_^  
        1.256色图一定是灰度图象吗?还是只要是有256种颜色就可以的了?  
        2.320*200分辨率的图象是不是就表示图象的大小就是320*200呢?(看到很多帖子都提供了源代码,可是down下来都读发现,图象文件读不进来,会不会是与这个有关啊)  
        3.一个很重要的问题,大家都说如果图象的width不是4的整数倍的话要补0.这样的话,图象的数据不就是变化了嘛.那么显示的时候怎么办呢?按补0之后的来显示吗?那样不是原来图象了嘛!  
  苦恼ing   ,请大家帮忙 问题点数:0、回复次数:12Top

1 楼shine04(shine04)回复于 2005-04-03 19:22:00 得分 0

大家不要嫌我的问题太菜鸟么~:(Top

2 楼shine04(shine04)回复于 2005-04-03 20:01:45 得分 0

大家都来看一看嘛,为什么我的帖子一点人气都没有?Top

3 楼mensa(Talor)回复于 2005-04-03 20:28:47 得分 0

第一个问题:256色图好像不一定是灰度图像吧。  
  第二个问题:320×200的图像其大小不一定是320×200,因为大多数图像都是以压缩格式存储的,所以实际大小应该小于320×200;  
  第三个问题:我也不知道:)Top

4 楼shine04(shine04)回复于 2005-04-03 21:26:10 得分 0

仍旧很感激你:)Top

5 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-04-03 21:50:39 得分 0

3.每一行读完后fseek跳到下一个四个字节对齐的  
  Top

6 楼xhltoo(晨风)回复于 2005-04-04 10:40:03 得分 0

关注!!  
  Top

7 楼lito_rat(一只无聊的老鼠)回复于 2005-04-04 18:39:25 得分 0

同样关注Top

8 楼ThinkLover(青青子衿)回复于 2005-04-04 22:54:34 得分 0

1.256色图不一定是灰度图象。只是说每个pixel用8bit表示。  
        2.320*200分辨率的图象表示图象有320*200个象素点,至于其存储大小,还要看是否压缩。(bmp也可以采用行程压缩的哦)  
        3.图象的width不是4的整数倍的话要补0.其实在我门通常处理的图象里,宽度很少有不是4的整数倍的。这个确实比较麻烦。在我写的一个工具里,干脆没考虑这种情况,呵呵Top

9 楼piziliu2003(眼淚咖啡)回复于 2005-04-05 18:32:20 得分 0

#include   <stdio.h>  
  #include   <stdlib.h>  
  #include   <string.h>  
  #include   <bios.h>  
  #include   <conio.h>  
  #include   <ctype.h>  
  #include   <dos.h>  
  #include   <fcntl.h>  
  #include   <io.h>  
  #define   lengthlimit   640  
  #define       highlimit   480  
  int   Set640_480   (void)  
  {  
  asm      
  {     mov   ax,4f02h  
        mov   bx,0101h  
        int   10h  
  }  
    if((_AL==0x4f)&&(_AH==0))  
    {  
          return(0);  
    }  
    return(1);  
  }  
  void   Set_Page(int   page)  
  {  
        asm  
    {   mov   ax,4f05h  
        asm   mov   bx,0  
        asm   mov   dx,page  
        asm   int   10h  
    }  
  }  
  void   myputpixel   (int   row,int   col,unsigned   char   color)  
  /*(row,col)??的坐?,color???色*/  
  {  
    unsigned   long   dantance;  
    unsigned   y;  
    static   int   totalpage=0;  
    int   page;  
    dantance=1l*col*lengthlimit+row;  
    y=(unsigned)(dantance&0X0000ffffl);  
    page=(int)(1.0*dantance/65536);  
    if   (totalpage!=page)   {     totalpage=page;     Set_Page(page);     }  
    asm   {  
                mov   ax,0a000h  
                mov   es,ax  
                mov   si,y  
                mov   al,color  
                mov   es:[si],al  
            }  
  }  
  void   bmpout(char   *bmpstr)  
  /*   打?文件名?*bmpstr的BMP文件,?出?象*/  
  {  
    FILE   *bmpfp;  
    struct   bmp{  
            int   bftype;  
            long   bfsize;  
            long   bfr;  
            long   bfoff;  
            long   bisize;  
            long   biwidth   ;  
            long   biheight;  
        }   bmpp;  
    struct   DAC{  
          char   blue;  
          char   green;  
          char   red;  
        };  
    struct   DAC   dacp[256];  
    char   pp;  
    int   colorcount,x,y,i,j,x0=0,y0=470,k,bibit,svg;  
    char   resev,buf1   ;  
    void     *buf;  
    Set640_480();  
    if((bmpfp=fopen(bmpstr,"rb"))==NULL)  
      {  
      printf("can't   open   file");  
      return;  
    }  
    fread(&bmpp,sizeof(bmpp),1,bmpfp);  
    fseek(bmpfp,28l,SEEK_SET);  
    fread(&bibit,2,1,bmpfp);  
    fseek(bmpfp,46l,SEEK_SET);  
    fread(&colorcount,sizeof(colorcount),1,bmpfp);  
    if   (colorcount==0)   {   colorcount=256;}  
    fseek   (bmpfp,54l,SEEK_SET);  
    for   (i=0;i<colorcount;i++)  
      {  
        fread(&dacp[i],3,1,bmpfp);  
        fread(&resev,1,1,bmpfp);  
      }  
    for(i=0;i<colorcount;i++)  
    {  
        pp=dacp[i].red>>2;  
        dacp[i].red=dacp[i].blue>>2;  
        dacp[i].blue=pp;  
        dacp[i].green=(dacp[i].green>>2);  
    }  
      asm   push   es  
    _ES=FP_SEG(dacp);  
    _DX=FP_OFF   (dacp);  
      asm   mov   bx,0  
      asm   mov   cx,colorcount  
      asm   mov   ah,10h  
      asm   mov   al,12h  
      asm   int   10h  
      asm   pop   es  
      fseek(bmpfp,bmpp.bfoff,SEEK_SET);  
      buf=malloc(bmpp.biwidth);  
      for(i=0;i<bmpp.biheight;i++)  
      {  
          y=y0-i;  
          fread(buf,bmpp.biwidth,1,bmpfp);  
          for(   j=x0;j<x0+bmpp.biwidth;j++)  
            myputpixel(j,y,*((unsigned   char*)buf+j));  
        }  
    free(buf);  
    getch();  
    fclose(bmpfp);  
    delay(500);  
    return;  
  }  
  void   main()  
  {  
  bmpout("*.bmp");     /*   打?某一BMP文件并?出?象*/  
  }  
  Top

10 楼shine04(shine04)回复于 2005-04-05 18:35:24 得分 0

可是,TC,VC中好象都不支持汇编呀,难道是哪个地方要设置一下.编译都不通过呀.Top

11 楼defyer007(深入浅出)回复于 2005-04-05 18:50:35 得分 0

TC中支持汇编的,好象要如下写:  
  /*在C环境中*/  
  asm  
  {  
  /*汇编代码插在这里*/  
  }Top

12 楼shine04(shine04)回复于 2005-04-09 22:58:22 得分 0

我知道啊,可是遇到asm,它就编译通不过啊.  
  Top

相关问题

  • 怎样用VB把BMP图象转换成JPG格式的图象
  • 请问对图象处理,其他格式的图象是不是需要转为BMP格式再处理?
  • 怎么样在TC2.0里显示BMP格式的图象文件?
  • VB中如何将BMP图象转换为JPEG或其它类型的图象文件格式?
  • 谁有详细的BMP或JPG格式图象显示的说明
  • 图象格式的问题!!!!!!!!!
  • 我想要一个能显示bmp,jpg等图象格式的控件,哪位朋友能给我一个吗?
  • 100分求将dicom格式图象转成bmp显示的代码,最好是c的
  • 我想要一个能显示bmp,jpg等图象格式的控件,哪位朋友能给我一个吗?
  • QQ:76563357在取得路径的情况下,如何在对话框中显示*.bmp格式的图象,但不能把图象做成资源

关键词

  • asm
  • 图像
  • 图象
  • dacp
  • dantance
  • bmpp
  • 灰度
  • bmp
  • 显示
  • mov

得分解答快速导航

  • 帖主:shine04

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo