| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1859 人关注过本帖
标题:[BCCNCCode] C源码染色器
只看楼主 加入收藏
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
结帖率:92.86%
收藏
 问题点数:0 回复次数:14 
[BCCNCCode] C源码染色器
下载:
CKMc9wtI.rar (242.49 KB) [BCCNCCode] C源码染色器

一次,即可粘贴至BCCN的发表贴子的 [ HTML ] 编辑框,发表。 注意是[ HTML ] 编辑框。

mQWWctmX.bmp (3.1 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: BCCNCCode 源码 染色 下载 
2005-10-21 22:08
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
此源码由BC-CN论坛C源码染色机染色程序作者:knocker BC-CNCode BUG版 如有差错请见谅
#include <stdio.h> #include <stdlib.h> main() { char *str; char *p; str = (char *)malloc(100); p=str; while( *str++ = getchar() != '\n' ); *(str-1) = '\0'; printf("%s",p); getchar(); }

畅所欲言
2005-10-21 22:13
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
此源码由BC-CN论坛C源码染色机染色程序作者:knocker
BC-CNCode BUG版 如有差错请见谅

/***********************************************
*******在DOS下显示16位色位图源程序**************
********************************************** */
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#include<fcntl.h>
#include<bios.h>
#include<dos.h>
#include<io.h>
#include<graphics.h>
#define closegr closegraph

/***********************************************
*************位图文件头结构*********************
********************************************** */
typedef struct
{
int id ;

/*两字节的内容用来识别位图的类型:
'BM' : Windows 3.1x, 95, NT, …
'BA' :OS/2 Bitmap Array
'CI' :OS/2 Color Icon
'CP' :OS/2 Color Pointer
'IC' : OS/2 Icon
'PT' :OS/2 Pointer
注:因为OS/2系统并没有被普及开,所以在编程时,你只需判断第一个标识"BM"就行
*/

long filesize ;

/*用字节表示的整个文件的大小 */

long reserved ;

/*保留,必须设置为0 */

long dataoffset ;

/*从文件开始到位图数据开始之间的数据(bitmap data)之间的偏移量 */

long headersize ;

/*位图信息头(Bitmap Info Header)的长度,用来描述位图的颜色、压缩方法等。下面的长度表示:
28h - Windows 3.1x, 95, NT, …
0Ch - OS/2 1.x
F0h - OS/2 2.x
注:在Windows95、98、2000等操作系统中,位图信息头的长度并不一定是28h,因为微软已经制定出了新的BMP文件格式,其中的信息头结构变化比较大,长度加长。所以最好不要直接使用常数28h,而是应该从具体的文件中读取这个值。这样才能确保程序的兼容性。
*/

long width ;

/*位图的宽度,以象素为单位 */

long height ;

/*位图的高度,以象素为单位 */

int Planes ;

/*位图的位面数(注:该值将总是1) */

int Pixe ;

/*每个象素的位数
1 - 单色位图(实际上可有两种颜色,缺省情况下是黑色和白色。你可以自己定义这两种颜色)
4 - 16 色位图
8 - 256 色位图
16 - 16bit 高彩色位图
24 - 24bit 真彩色位图
32 - 32bit 增强型真彩色位图
*/

long Compression ;

/*压缩说明:
0 - 不压缩 (使用BI_RGB表示)
1 - RLE 8-使用8位RLE压缩方式(用BI_RLE8表示)
2 - RLE 4-使用4位RLE压缩方式(用BI_RLE4表示)
3 - Bitfields-位域存放方式(用BI_BITFIELDS表示)
*/

long bmpDataSize ;

/*用字节数表示的位图数据的大小。该数必须是4的倍数 */

long XPelsPerMeter ;

/*用象素/米表示的水平分辨率 */

long YPelsPerMeter ;

/*用象素/米表示的垂直分辨率 */

long ClrUsed ;

/*位图使用的颜色数。如8-比特/象素表示为100h或者 256 */

long ClrImportant ;

/*指定重要的颜色数。当该域的值等于颜色数时(或者等于0时),表示所有颜色都一样重要 */

}
BMPHEAD ;

BMPHEAD BmpHead ;
char convert[16]=
{
0x0,0x4,0x2,0x6,0x1,0x5,0x3,0x7,0x8,0xc,0xa,0xe,0x9,0xd,0x3,0xf
}
;

/*BMP色彩与VGA色对照表 */
unsigned char*bmp_data ;
int fp ;


/**********************************************
************ BGI初始化函数*********************
********************************************* */
void initgr(void)
{
int gd=DETECT,gm=0 ;

/* 和gd = VGA,gm = VGAHI是同样效果 */

registerbgidriver(EGAVGA_driver);

/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */

initgraph(&gd,&gm,"");
}

/***********************************************
*************位图文件头读取函数*****************
********************************************** */
int read_bmp_head(char*bmp_filename)
{

/*打开位图文件 */

if((fp=open(bmp_filename,O_RDONLY))==-1)
{
printf("%s%s",bmp_filename," is not found.");
return 1 ;
}
read(fp,&BmpHead,sizeof(BMPHEAD));

/*读取BMP文件的信息头 */


/*判断是否是BMP文件 */

if(BmpHead.id!=0x4d42)
{
printf("%s%s","'",bmp_filename,"' is not BMPfile");
return 1 ;
}
return 0 ;
}

/***********************************************
**************纠正宽度函数**********************
********************************************** */
int correct_width(int width)
{
int factual_width ;
if(width%4==0&&(width/4)%2==0);
else while(width%4!=0||(width/4)%2!=0)width++;
factual_width=width ;
return factual_width ;
}

/***********************************************
*************读位图文件并显示函数***************
********************************************** */
void put_bmp(char*bmpfile,int x,int y)
{
int read_bmp_head_return,i,j,d=0,cn ;
bmp_data=(unsigned char*)malloc(BmpHead.bmpDataSize*sizeof(unsigned char));
if((read_bmp_head_return=read_bmp_head(bmpfile))==1)
{
getch();
exit(1);
}
lseek(fp,BmpHead.dataoffset,SEEK_SET);
read(fp,bmp_data,BmpHead.bmpDataSize);

/*读取颜色数据到缓冲区内 */

cn=correct_width(BmpHead.width);
for(i=BmpHead.height;i>0;i--)
for(j=0;j {
putpixel(x+j++,y+i,convert[bmp_data[d]>>4]);

/*用高4位画1个点 */

putpixel(x+j++,y+i,convert[bmp_data[d]&0xf]);

/*用低4位画1个点 */

d++;
}
free(bmp_data);
close(fp);
}

/***********************************************
*************主函数*****************************
********************************************** */
int main(void)
{
initgr();
put_bmp("pix.bmp",320,240);
getch();
closegr();
return 0 ;
}


还是少了关键字struct

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-10-21 22:20
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
不错不错,想问问 比如这个: put_bmp("pix.bmp",320,240); 怎么把数字提取出来?数字的长度是变化的 这个: printf("%s%s","'",bmp_filename,"' is not BMPfile"); 怎样防止被染成 printf("%s%s","'",bmp_filename,"' is not BMPfile"); 一开始就计算引号的排行吗? 看看源代码可以不

畅所欲言
2005-10-21 22:33
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
不给看,昨天和你猛灌水,代码写得一踏糊涂,正头痛怎么改

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-10-21 22:37
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
见引号就把引号处理完,我的还差个格式化功能,写了一半,全部完成再放代码

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-10-21 22:40
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
太牛拉
这个也能自己编

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2006-08-08 00:08
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 
lz 好强啊~~~~~

人生没有彩排,每天都是现场直播~~~
2006-08-08 00:18
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
忽然流行作这个了,俺也学学HTML作一个。

http://myajax95./
2006-08-08 11:52
system32
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:58
帖 子:3096
专家分:0
注 册:2006-9-24
收藏
得分:0 
强!

[glow=200,blue,1]世界上妞是无限的,而我们的精力是有限的,用有限去搞无限,死定了。要用有限的精力去泡一个有钱妞,要发达,吃软饭![/glow]
2007-07-31 01:33
快速回复:[BCCNCCode] C源码染色器
数据加载中...
 
   



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

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