| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1465 人关注过本帖
标题:BMP急问!!!!!!!!!!!
只看楼主 加入收藏
dawnknight
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-8-7
收藏
 问题点数:0 回复次数:14 
BMP急问!!!!!!!!!!!
24位图像,从图像数据中读出3个字节:CH[3]后,怎么把R、G、B用起来??
我试过这样做:
R〉〉3、B〉〉5、G〉〉6;
K=B+G+R;
putpixel(x,y,k);
色彩不大对,能不能告诉我怎么做?我用的Turbo C3.0
搜索更多相关主题的帖子: BMP Turbo 位图 putpixel 色彩 
2008-08-07 18:37
扫门星
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-8-7
收藏
得分:0 
应该说你想直截用TC输出24位的色彩。可能行不通。
2008-08-07 21:57
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
不能这样,详细看楼下的答复。楼主最好去看看bmp的格式

[[it] 本帖最后由 卧龙孔明 于 2008-8-7 22:18 编辑 [/it]]

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-08-07 22:12
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
首先是定位问题,文件头部分有54B的地方开始真正的像素
同时,bmp的格式 是BGR,而不是RGB,最后,还要考虑位对齐因素

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-08-07 22:14
dawnknight
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-8-7
收藏
得分:0 
BMP格式很熟悉了,主要是24位像素中RGB怎么去用,我看了很多资料,可是说到这里就打此了,没有进一步说明!!
刚才看了256的8位程序,有一点点明白,可是24位的咋办??????
2008-08-08 01:16
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
收藏
得分:0 
看看有关vesa的资料啊

Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
2008-08-08 08:55
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
[bo][un]dawnknight[/un] 在 2008-8-8 01:16 的发言:[/bo]

BMP格式很熟悉了,主要是24位像素中RGB怎么去用,我看了很多资料,可是说到这里就打此了,没有进一步说明!!
刚才看了256的8位程序,有一点点明白,可是24位的咋办??????

我在GL中这样用的
GLbytes BmpData[BMP_SIZE];
设当前指针为p;
读一个字节到p+2
读一个字节到p+1,
读一个字节到p,
p+=3;
循环直到读完,中间位对其操作在第一层循环内进行。
虽然GL有BGREXT格式,但是我还是这样处理了,因为后者可能导致不兼容的问题从而影响移植。

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-08-08 09:50
扫门星
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-8-7
收藏
得分:0 
版主你可能还没看清楼主问题的主要目的,
  楼主的目的是要把读取到的24位像素点,用TC的putpixel(x,y,k);输出到屏幕上的。 而版主的目的是怎么样读取24位像素点。
  关于TC对色彩的输出,请运行下面的程式就明白了。

#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
int a,b;
void initgr(void) /* BGI初始化 */
{
  int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
  registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
  initgraph(&gd, &gm, "");
}

int main(void)
{
  initgr(); /* BGI初始化 */
  /**************************************/

    for(a=100;a<400;a++)      /*取x坐标 像素点100到400  */
       for(b=100;b<200;b++)    /*取y坐标 像素点100到200  */
       putpixel(a,b,(a-100)/5);  /* 画一个长为300宽为100的彩色带 */
        /* 以上彩色取值为:X坐标值减100后,再除以5。
        除以5的目的是为了便于查看 */


  /***********************************/

  getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
  closegr(); /* 恢复TEXT屏幕模式 */
  return 0;
}
2008-08-08 11:00
dawnknight
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-8-7
收藏
得分:0 
这样好象不对,24位用3个字节表示啊??怎么用坐标值表示???
我用

usigned char ch[3],R,G,B;
fread(ch,sizeof(ch),1,fp);(读一个像素)
R=ch[0];
G=ch[1];
B=ch[1];
现在怎么把这个像素显示出来
2008-08-08 11:05
扫门星
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-8-7
收藏
得分:0 
我的意思是说你用的TC输出色彩是无法控制红、蓝、绿这三个色基的值。
除非你用混合编程,或第三方软件来实现。
2008-08-08 11:19
快速回复:BMP急问!!!!!!!!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039134 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved