C打开图片

在TC2.0下,隶属于16位子系统,所以int是2字节,long是4字节,char是1字节。绘图系统模式是VGA,颜当然也很有限,所以读取bmp像素后需要把像素颜转换为“最近”的已有VGA颜。用int GetColor(int r,int g,int b)实现返回一个颜值(color code)。用putpixel(int x,int y,int color)绘制一个像素。
(读bmp处尚有问题,会有读取像素时未读出字节的问题出现,原因尚待查。。。。)
#include  <graphics.h>
#include  <string.h>
#include  <stdio.h>
#include  <math.h>
#include  <alloc.h>
int MAX_Y=480;
int MAX_X=640;
int COLORS[15][4]=
    {
中国科学院科学数据库        /* Red Green Blue,code */
        {  0,  0,  0, 0},    /* Black                */
        {  0,  0,255, 1},    /* Blue */
        {  0,128,  0, 2},    /* Green                */
通讯世界        {  0,255,255, 3},    /* Cyan                */
        {255,  0,  0, 4},    /* Red                */
张之洞路        {255,  0,255, 5},    /* Magenta            */
        {165, 42, 42,20},    /* Brown                */
        {211,211,211, 7},    /* LightGray        */
        {169,169,169,56},    /* DarkGray            */
        {173,216,230,57},    /* LightBlue        */
        {144,238,144,58},    /* LightGreen        */
        {238,144,144,60},    /* LightRed?        */
        {238,144,238,61},    /* LightMegenta?    */
        {255,255,  0,62},    /* Yellow            */
        {255,255,255,63}        /* WhITe                */
    };
/* pixel : keep channel order wITh readfile order */
typedef struct _PIXEL
{
    unsigned char b;
    unsigned char g;
    unsigned char r;
} PIXEL;
typedef struct _BITMAPFILEHEADER
{
    int type;
    long fileSize;
    long reserved;
    long offbITs;
} BITMAPFILEHEADER,*PBITMAPFILEHEADER;
typedef struct _BITMAPINFOHEADER
{
  long dwSize;
    long width;
    long height;
    int planes;
    int bpp;
    long compression;
    long sizeImage;
    long hResolution;
    long vResolution;
    long colors;
    long importantColors;
} BITMAPINFOHEADER,*PBITMAPINFOHEADER;
int    GetColor();
void    ReadImage();
增殖税void    DrawAxes();
void main()
{
    int driver,mode,i,j;
    char c,string[255],filename[255];
    printf("input the filename of bITmap file:\n");
    scanf("%s",filename);
    driver=DETECT;
    mode=IBM8514HI;
    inITgraph(&driver,&mode,"");
    /* draw a bITmap */
    ReadImage(filename);
    c=getch();
    closegraph();
}
/* read pixels from imagefile and display */
void ReadImage(char* filename)
{
    FILE* stream;
    char string[255];
    int i,j,width,height,color;
    unsigned long bytesRead;
    BITMAPFILEHEADER FileHeader,*pFileHeader;
    BITMAPINFOHEADER InfoHeader,*pInfoHeader;
    unsigned char *pPixels,red,green,blue;
    pFileHeader=&FileHeader;
    pInfoHeader=&InfoHeader;
    stream=fopen(filename,"rb");
    if(stream==NULL)
    {
        printf("open file error!\n");
        exIT(0);
    }
    fseek(stream,0,0);
    fread(pFileHeader,1,sizeof(FileHeader),stream);
    fread(pInfoHeader,1,sizeof(InfoHeader),stream);
    height=pInfoHeader->height;
    /* padding for 4 bytes */
    if(pInfoHeader->width%4 !=0)
        width=(pInfoHeader->width/4+1)*4;
    else
        width=pInfoHeader->width;
    pPixels=malloc(width*3);
    for(j=height-1;j>=0;j--)
{
memset(pPixels,0,width*3);
        fseek(stream,pFileHeader->offbITs+j*width*3, 0);
        bytesRead=fread(pPixels,1,width*3,stream);
        if(bytesRead!=width*3)
        {
            sprintf(string,"bytesRead=%d j=%d",bytesRead,height-3-j);
            outtextxy(400,280,string);
        }
        for(i=0;i <width;i++)
        {
            red    = pPixels[i*3+2];
            green    = pPixels[i*3+1];
            blue    = pPixels[i*3];
            color=GetColor(red,green,blue);
            putpixel(100+i,height+100-j,color);
        }
    }
    free(pPixels);
    setcolor(63);
    rectangle(100,100,100+width,100+height);
忍耐是一种美丽
    /* Draw X and Y axes */
    DrawAxes(width,height);
if(stream!=NULL)
{
    fclose(stream);
}
    setcolor(3);
    outtextxy(100,30,filename);
    getch();
}
/* compute a color code by RGB  */
int GetColor(unsigned int red,unsigned int green,unsigned int blue)
{
    int i,index=0;
    unsigned long dist,temp;
    temp=195075;
中医美容论文

本文发布于:2024-09-23 02:29:49,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/352183.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:像素   颜色   字节   问题   系统   出现   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议