一个大公司的笔试题,图像处理方面的,让你补全剩下的代码

lei0518 2011-08-03 07:26:35
先来问题,因为例子太大了,是图像处理方面的
#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0
typedef unsigned char BYTE;


typedef struct STRUCT_IMAGE{
int width,height;
int depth;
void* pixels;
}ImageData;

#define PIXELMAX 255

/*
list2-4.c
*/
typedef struct STRUCT_PIXEL{
int r; // Red惉暘
int g; // Green惉暘
int b; // Blue惉暘
}Pixel;

// list2-4偙偙傑偱

// list2-12
typedef struct STRUCT_COORDINATE{
int x,y; // 張棟偡傋偒嵗昗傪曉偡
int buffer1,buffer2,buffer3; // 張棟偺搑拞宱夁側偳傪曐懚偡傞偨傔偺僄儕傾
}Coordinate;
// list2-12 偙偙傑偱

ImageData* createImage(int width,int height,int depth);
void disposeImage(ImageData *img);
int readBMPfile(char *fname,ImageData **img);
int writeBMPfile(char *fname,ImageData *img);
int getPixel(ImageData *img,int x,int y,Pixel *pix);
int setPixel(ImageData *img,int x,int y,Pixel *pix);

#include "image.h"

main(int ac,char *av[])
{
ImageData *image;
int x,y;
Pixel pixel1,pixel2;

pixel1.r=255;
pixel1.g=255;
pixel1.b=255;
pixel2.r=0;
pixel2.g=0;
pixel2.b=0;
image=createImage(100,100,24);
for(y=0;y<100;y++) {
for(x=0;x<100;x++) {
if(x%2 == y%2) {
setPixel(image,x,y,&pixel1);
}
else {
setPixel(image,x,y,&pixel2);
}
}
}


//
这里输入你的问题答案 //


disposeImage(image);

}
...全文
558 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lei0518 2011-08-03
  • 打赏
  • 举报
回复
这个不用看注释的吧
大家只看main函数估计就可以了吧
赵4老师 2011-08-03
  • 打赏
  • 举报
回复
注释明显是UTF8
ryfdizuo 2011-08-03
  • 打赏
  • 举报
回复
一些基本的bmp操作。哪家大公司面试这个呢?
nightkids_008 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 luciferisnotsatan 的回复:]
注释都是乱码
[/Quote]
而且太长了~~~
luciferisnotsatan 2011-08-03
  • 打赏
  • 举报
回复
注释都是乱码
lei0518 2011-08-03
  • 打赏
  • 举报
回复
// List2-8
// 夋憸僨乕僞傪BMP宍幃(Windows宍幃)偱僼傽僀儖偵彂偒弌偡
// 乮僼儖僇儔乕偺夋憸僨乕僞偺傒僒億乕僩乯
int writeBMPfile(char *filename,ImageData *image)
{
FILE *fp;
BITMAPFILEHEADER bfn;
int width,height;
int mxbyte; // 侾峴傪奿擺偡傞偺偵昁梫側僶僀僩悢
//int x
int pad;
int depth; // 侾夋慺偁偨傝偺價僢僩悢
int byte_per_pixel; //侾梫慺偁偨傝偺僶僀僩悢
int palet_size; // 僷儗僢僩僒僀僘乮枹幚憰乯
int x,y,i;
int iBytes;
//unsigned int wsize;
Pixel pixel;

width=image->width;
height=image->height;
depth=image->depth;

// 僼儖僇儔乕埲奜僒億乕僩奜
if(depth!=24) {
//errcode=-3;
goto $abort1;
}
// 僼儖僇儔乕埲奜偺偙偲傪庒姳峫椂偟偰偄傞偑枹幚憰丏僼儖僇儔乕偺傒側傜丄杮棃-- end -- 偺晹暘傑偱晄梫
if(depth==24) {
byte_per_pixel=1;
}
else {
byte_per_pixel=depth/8;
}
if(depth>=24) {
palet_size=0;
}
else {
palet_size=256;
}
// -- end --
// 僷僨傿儞僌傪峫椂偟偨侾楍暘偵昁梫側僶僀僩悢
mxbyte=getDIBxmax(width,depth);
// 僿僢僟晹偺愝掕乮堦晹偺傒乯
bfn.bfType=0x4d42; //'BM'
bfn.bfSize=14+40+/*sizeof(BITMAPFILEHEADER) +sizeof(BITMAPINFOHEADER) +*/
palet_size*4/*sizeof(RGBQUAD)*/ +
mxbyte*height*byte_per_pixel;
bfn.bfReserved1=0;
bfn.bfReserved2=0;
bfn.bfOffBits=14+40/*sizeof(BITMAPFILEHEADER) +sizeof(BITMAPINFOHEADER)*/ +
palet_size*4/*sizeof(RGBQUAD)*/;

if((fp=fopen(filename,"wb"))==NULL) {
goto $abort1;
}
// 僿僢僟晹偺彂偒弌偟
fwriteWORD(bfn.bfType,fp);
fwriteDWORD(bfn.bfSize,fp);
fwriteWORD(bfn.bfReserved1,fp);
fwriteWORD(bfn.bfReserved2,fp);
fwriteDWORD(bfn.bfOffBits,fp);
fwriteDWORD(40/*sizeof(BITMAPINFOHEADER)*/,fp); //biSize
fwriteDWORD(width,fp); // biWidth
fwriteDWORD(height,fp); // biHeight
fwriteWORD(1,fp); // biPlanes
fwriteWORD(depth,fp); // biBitCount
fwriteDWORD(BI_RGB,fp); // biCompression
fwriteDWORD(0,fp); // biSizeImage
fwriteDWORD(300,fp); // biXPelsPerMeter
fwriteDWORD(300,fp); // biYPelsPerMeter
fwriteDWORD(0,fp); // biClrUsed
fwriteDWORD(0,fp); // biClrImportant

// 昁梫側僷僨傿儞僌偺僒僀僘
pad=mxbyte-width*depth/8;
// 夋憸僨乕僞偺彂偒弌偟
for(y=height-1;y>=0;y--) {
for(x=0;x<width;x++) {
getPixel(image,x,y,&pixel);
fputc(pixel.b,fp);
fputc(pixel.g,fp);
fputc(pixel.r,fp);
}
// Padding晹偺弌椡
for(i=0;i<pad;i++) {
fputc(0,fp);
}
}
return 0;
$abort1:
return 1;
$abort2:
fclose(fp);
return 1;
}
//到这里bmp.c文件完了。下面是image.c 其实如果会图像处理的,不用看这2个例子
#include "image.h"
/* List2-2
夋憸僨乕僞嶌惉
width :夋憸偺墶暆
height:夋憸偺廲暆
depth :侾夋慺偁偨傝偺價僢僩悢(8 or 24)
*/
ImageData* createImage(int width,int height,int depth)
{
ImageData *new_image;
int byte_per_pixel;

if(width<0 || height<0) return NULL;
if(depth!=8 && depth!=24) return NULL; // 侾夋慺偁偨傝偺價僢僩悢(8,24埲奜偼僄儔乕)

new_image=malloc(sizeof(ImageData));
if(new_image==NULL) return NULL;
// 1夋慺奿擺偡傞偺偵昁梫側僶僀僩悢傪媮傔傞
byte_per_pixel=depth/8;
// 夋憸僨乕僞傪奿擺偡傞偺偵昁梫側儊儌儕傪妋曐
new_image->pixels=malloc(sizeof(BYTE)*byte_per_pixel*width*height);
if(new_image->pixels==NULL) {
free(new_image);
return NULL;
}
// 奺僾儘僷僥傿抣傪愝掕
new_image->width=width;
new_image->height=height;
new_image->depth=depth;
return new_image;
}

/* List2-3
夋憸僨乕僞偺攑婞
*/
void disposeImage(ImageData *image)
{
if(image->pixels!=NULL) free(image->pixels);
free(image);
return;
}

/* List2-5
夋憸僨乕僞忋偺夋慺抣傪庢摼
x,y 夋慺偺嵗昗
pix 夋慺抣傪奿擺偡傞
*/
int getPixel(ImageData *image,int x,int y,Pixel *pixel)
{
int return_value=1;
int adress; // 夋慺偺夋憸忋偺埵抲
int depth,gray_value;
BYTE *pixels;

if(image==NULL) return -1;
if(image->pixels==NULL) return -1;
// 夋憸奜偺嵗昗偑巜掕偝傟偨応崌偺張棟乮嵟傕嬤偄夋憸忋偺夋慺傪嶲徠偡傞乯
if(x<0) {
x=0;
return_value=0;
}
if(x >= image->width ) {
x=image->width -1;
return_value=0;
}
if(y<0) {
y=0;
return_value=0;
}
if(y >= image->height ) {
y=image->height -1;
return_value=0;
}
depth=image->depth;
adress=x + y*image->width;
pixels=image->pixels;
if(depth==8) { // 僌儗乕僗働乕儖偺応崌偼丄RGB偡傋偰偺摨偠抣傪僙僢僩偡傞
gray_value=pixels[adress];
pixel->r=gray_value;
pixel->g=gray_value;
pixel->b=gray_value;
}
else if(depth==24) {
pixels+=(adress*3);
pixel->r=(*pixels);
pixels++;
pixel->g=(*pixels);
pixels++;
pixel->b=(*pixels);
}
else {
return -1;
}
return return_value;
}

/*
夋慺抣偺曗惓乮斖埻奜偺抣傪斖埻撪偵廂傔傞乯
*/
int correctPixelValue(int value,int max)
{
if(value<0) return 0;
if(value>max) return max;
return value;
}

/* List2-6
夋憸僨乕僞忋偺夋慺抣傪曄峏偡傞
x,y 夋慺偺嵗昗
pix 僙僢僩偡傞夋慺抣
*/
int setPixel(ImageData *image,int x,int y,Pixel *pixel)
{
int adress; // 夋慺偺夋憸忋偺埵抲
int depth;
BYTE *pixels;

if(image==NULL) return -1;
if(image->pixels==NULL) return -1;
// 夋憸奜偺嵗昗偑巜掕偝傟偨傜側偵傕偟側偄
if(x<0 || x >= image->width || y<0 || y >= image->height ) {
return 0;
}
depth=image->depth;
adress=x + y*image->width;
pixels=image->pixels;
if(depth==8) {
pixels[adress]=correctPixelValue(pixel->r,PIXELMAX);
}
else if(depth==24) {
pixels+=(adress*3);
(*pixels)=correctPixelValue(pixel->r,PIXELMAX);
pixels++;
(*pixels)=correctPixelValue(pixel->g,PIXELMAX);
pixels++;
(*pixels)=correctPixelValue(pixel->b,PIXELMAX);
}
else {
return -1;
}
return 1;
}
//全例子完了
lei0518 2011-08-03
  • 打赏
  • 举报
回复
下面上来例子,一个是bmp.c 一个是image.c

#include "image.h"

typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned short WORD;
typedef unsigned long LONG;

#define BI_RGB 0L
#define BI_RLE8 1L
#define BI_RLE4 2L
#define BI_BITFIELDS 3L

// BMP僿僢僟晹偺僨乕僞峔憿掕媊
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;

typedef struct tagBITMAPCOREHEADER {
DWORD bcSize;
WORD bcWidth;
WORD bcHeight;
WORD bcPlanes;
WORD bcBitCount;
} BITMAPCOREHEADER, *PBITMAPCOREHEADER;

typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;

#define MAXCOLORS 256

// 僼傽僀儖傛傝俀僶僀僩惍悢傪彂偒崬傓乮儕僩儖僄儞僨傿傾儞乯
int fwriteWORD(WORD val,FILE *fp)
{
int i,c;

c=val;
for(i=0;i<2;i++) {
fputc(c%256,fp);
c/=256;
}
return TRUE;
}

// 僼傽僀儖傛傝係僶僀僩惍悢傪彂偒崬傓乮儕僩儖僄儞僨傿傾儞乯
int fwriteDWORD(DWORD val,FILE *fp)
{
int i,c;

c=val;
for(i=0;i<4;i++) {
fputc(c%256,fp);
c/=256;
}
return TRUE;
}

// 僼傽僀儖傛傝俀僶僀僩惍悢傪撉傒崬傓乮儕僩儖僄儞僨傿傾儞乯
int freadWORD(WORD *res,FILE *fp)
{
int i,c;
int val[2];

for(i=0;i<2;i++) {
c=fgetc(fp);
if(c==EOF) return FALSE;
val[i]=c;
}
*res=val[1]*256+val[0];
return TRUE;
}

// 僼傽僀儖傛傝係僶僀僩惍悢傪撉傒崬傓乮儕僩儖僄儞僨傿傾儞乯
int freadDWORD(DWORD *res,FILE *fp)
{
int i,c;
int val[4];
DWORD tmp=0;

for(i=0;i<4;i++) {
c=fgetc(fp);
if(c==EOF) return FALSE;
val[i]=c;
}
tmp=0;
for(i=3;i>=0;i--) {
tmp*=256;
tmp+=val[i];
}
*res=tmp;
return TRUE;
}

// BMP偺庬椶傪敾暿
// 栠傝抣丗FALSE丂OS/2宍幃
// TRUE WIndows宍幃
static BOOL IsWinDIB(BITMAPINFOHEADER* pBIH)
{
if (((BITMAPCOREHEADER*)pBIH)->bcSize == sizeof(BITMAPCOREHEADER)) {
return FALSE;
}
return TRUE;
}

// 僷儗僢僩偺僒僀僘傪庢摼
// iBitCount 侾夋慺偁偨傝偺價僢僩悢
int countOfDIBColorEntries(int iBitCount)
{
int iColors;

switch (iBitCount) {
case 1:
iColors = 2;
break;
case 4:
iColors = 16;
break;
case 8:
iColors = 256;
break;
default:
iColors = 0;
break;
}

return iColors;
}

// 僷僨傿儞僌梫慺傪峫椂偟偰侾楍暘偺僶僀僩悢傪媮傔傞
int getDIBxmax(int width,int depth)
{
switch(depth) {
case 32:
return width*4;
case 24:
//return mx;
return ((width*3)+3)/4*4;
break;
case 16:
return (width+1)/2*2;
break;
case 8:
return (width+3)/4*4;
break;
case 4:
return (((width+1)/2)+3)/4*4;
break;
case 1:
return (((width+7)/8)+3)/4*4;
}
return width;
}

// List2-7
// BMP僨乕僞傪僼傽僀儖傛傝撉傒崬傓
int readBMPfile(char *filename,ImageData **image)
{
int i,c;
int errcode=0;
BITMAPFILEHEADER BMPFile;
BITMAPINFOHEADER BMPInfo;
BITMAPCOREHEADER BMPCore;
int colors;
int colorTableSize;
int bitsSize;
int BISize;
int x,y;
int mx,my,depth;
int pad; //僷僨傿儞僌偡傞僶僀僩悢
int mxbyte; // 侾峴傪奿擺偡傞偺偵昁梫側僶僀僩悢
int isPM=FALSE; // BMP偺宍幃傪婰榐偡傞僼儔僌
FILE *fp;

WORD HEAD_bfType;
DWORD HEAD_bfSize;
WORD HEAD_bfReserved1;
WORD HEAD_bfReserved2;
DWORD HEAD_bfOffBits;
DWORD INFO_bfSize;
Pixel palet[MAXCOLORS];
Pixel setcolor;

if((fp=fopen(filename,"rb"))==NULL) {
return -1;
}

// BMP僼傽僀儖偼昁偢'BM(0x4d42)'偱巒傑傞丏偦傟埲奜偺応崌偼BMP偱偼側偄偺偱丆拞巭偡傞
if(!freadWORD(&HEAD_bfType,fp)) {
errcode=-2;
goto $ABORT;
}
if (HEAD_bfType != 0x4d42) {
errcode=-10;
goto $ABORT;
}
// 僿僢僟晹偺僒僀僘(Byte)
if(!freadDWORD(&HEAD_bfSize,fp)) {
errcode=-10;
goto $ABORT;
}
// 梊栺梡椞堟乮枹巊梡乯
if(!freadWORD(&HEAD_bfReserved1,fp)) {
errcode=-10;
goto $ABORT;
}
// 梊栺梡椞堟乮枹巊梡乯
if(!freadWORD(&HEAD_bfReserved2,fp)) {
errcode=-10;
goto $ABORT;
}
// 僆僼僙僢僩
if(!freadDWORD(&HEAD_bfOffBits,fp)) {
errcode=-10;
goto $ABORT;
}
// 僿僢僟晹偺僒僀僘
if(!freadDWORD(&INFO_bfSize,fp)) {
errcode=-10;
goto $ABORT;
}

// 僿僢僟晹偺僒僀僘偑婯掕奜側傜偽僄儔乕偲偡傞
if (INFO_bfSize == 40/*sizeof(BITMAPINFOHEADER)*/ || INFO_bfSize == 12/*sizeof(BITMAPCOREHEADER)*/) {
BMPInfo.biSize = INFO_bfSize;
// BITMAPCOREHEADER宍幃偺応崌
if(INFO_bfSize == sizeof(BITMAPCOREHEADER)) {
WORD tmp;
isPM = TRUE;
// 夋憸偺墶暆
if(!freadWORD(&tmp,fp)) {
errcode=-10;
goto $ABORT;
}
BMPInfo.biWidth=tmp;
// 夋憸偺廲暆
if(!freadWORD(&tmp,fp)) {
errcode=-10;
goto $ABORT;
}
BMPInfo.biHeight=tmp;
// 夋憸偺僾儗乕儞悢
if(!freadWORD(&(BMPInfo.biPlanes),fp)) {
errcode=-10;
goto $ABORT;
}
// 侾夋慺偁偨傝偺價僢僩悢
if(!freadWORD(&(BMPInfo.biBitCount),fp)) {
errcode=-10;
goto $ABORT;
}
}
else { // BITMAPINFOHEADER宍幃偺応崌
// 夋憸偺墶暆
if(!freadDWORD(&(BMPInfo.biWidth),fp)) {
errcode=-10;
goto $ABORT;
}
// 夋憸偺廲暆
if(!freadDWORD(&(BMPInfo.biHeight),fp)) {
errcode=-10;
goto $ABORT;
}
// 夋憸偺僾儗乕儞悢
if(!freadWORD(&(BMPInfo.biPlanes),fp)) {
errcode=-10;
goto $ABORT;
}
// 侾夋慺偁偨傝偺價僢僩悢
if(!freadWORD(&(BMPInfo.biBitCount),fp)) {
errcode=-10;
goto $ABORT;
}
}
// BITMAPINFOHEADER偺応崌偺傒懚嵼偡傞忣曬傪撉傒崬傓
if(!isPM) {
// 埑弅宍幃
if(!freadDWORD(&(BMPInfo.biCompression),fp)) {
errcode=-10;
goto $ABORT;
}
// 夋憸僨乕僞晹偺僒僀僘
if(!freadDWORD(&(BMPInfo.biSizeImage),fp)) {
errcode=-10;
goto $ABORT;
}
// X曽岦偺夝憸搙
if(!freadDWORD(&(BMPInfo.biXPelsPerMeter),fp)) {
errcode=-10;
goto $ABORT;
}
// Y曽岦偺夝憸搙
if(!freadDWORD(&(BMPInfo.biYPelsPerMeter),fp)) {
errcode=-10;
goto $ABORT;
}
// 奿擺偝傟偰偄傞僷儗僢僩偺怓悢
if(!freadDWORD(&(BMPInfo.biClrUsed),fp)) {
errcode=-10;
goto $ABORT;
}
// 廳梫側僷儗僢僩偺僀儞僨僢僋僗
if(!freadDWORD(&(BMPInfo.biClrImportant),fp)) {
errcode=-10;
goto $ABORT;
}
}
}
else {
errcode=-10;
goto $ABORT;
}
mx=BMPInfo.biWidth;
my=BMPInfo.biHeight;
depth=BMPInfo.biBitCount;
// 256怓丆僼儖僇儔乕埲奜僒億乕僩奜
if(depth!=8 && depth!=24) {
errcode=-3;
goto $ABORT;
}
// 旕埑弅宍幃埲奜偼僒億乕僩奜
if(BMPInfo.biCompression!=BI_RGB) {
errcode=-20;
goto $ABORT;
}
// 僿僢僟晹偵僷儗僢僩僒僀僘偺忣曬偑側偄応崌偼侾夋慺偁偨傝偺價僢僩悢偐傜媮傔傞
if(BMPInfo.biClrUsed==0) {
colors = countOfDIBColorEntries(BMPInfo.biBitCount);
}
else {
colors = BMPInfo.biClrUsed;
}

// 僷儗僢僩忣曬偺撉傒崬傒
// BMP偺庬椶偵傛偭偰僼僅乕儅僢僩偑堎側傞偺偱張棟傪傢偗傞
if (!isPM) {
for(i=0;i<colors;i++) {
// Blue惉暘
c=fgetc(fp);
if(c==EOF) {
errcode=-10;
goto $ABORT;
}
palet[i].b=c;
// Green惉暘
c=fgetc(fp);
if(c==EOF) {
errcode=-10;
goto $ABORT;
}
palet[i].g=c;
// Red惉暘
c=fgetc(fp);
if(c==EOF) {
errcode=-10;
goto $ABORT;
}
palet[i].r=c;
// 偁傑傝
c=fgetc(fp);
if(c==EOF) {
errcode=-10;
goto $ABORT;
}
}
} else {
for(i=0;i<colors;i++) {
c=fgetc(fp);
if(c==EOF) {
errcode=-10;
goto $ABORT;
}
palet[i].b=c;
c=fgetc(fp);
if(c==EOF) {
errcode=-10;
goto $ABORT;
}
palet[i].g=c;
c=fgetc(fp);
if(c==EOF) {
errcode=-10;
goto $ABORT;
}
palet[i].r=c;
}
}
// 僼儖僇儔乕偱夋憸僨乕僞傪嶌惉
*image=createImage(mx,my,24);
mxbyte=getDIBxmax(mx,depth);
pad=mxbyte-mx*depth/8;
// 夋憸僨乕僞撉傒崬傒
for(y=my-1;y>=0;y--) {
for(x=0;x<mx;x++) {
if(depth==8) { // 256怓宍幃偺応崌偼僷儗僢僩偐傜RGB抣傪媮傔傞
c=fgetc(fp);
if(c==EOF) {
errcode=-20;
goto $ABORT;
}
setcolor.r=palet[c].r;
setcolor.g=palet[c].g;
setcolor.b=palet[c].b;
}
else if(depth==24) {
c=fgetc(fp);
if(c==EOF) {
errcode=-20;
goto $ABORT;
}
setcolor.b=c;
c=fgetc(fp);
if(c==EOF) {
errcode=-20;
goto $ABORT;
}
setcolor.g=c;
c=fgetc(fp);
if(c==EOF) {
errcode=-20;
goto $ABORT;
}
setcolor.r=c;
}
setPixel(*image,x,y,&setcolor);
}
// Padding晹偺撉傒旘偽偟
for(i=0;i<pad;i++) {
c=fgetc(fp);
if(c==EOF) {
errcode=-20;
goto $ABORT;
}
}
}
$ABORT: // 僄儔乕帪偺旘傃愭
fclose(fp);
return errcode;
}

接下面
lei0518 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dizuo 的回复:]

一些基本的bmp操作。哪家大公司面试这个呢?
[/Quote]
sony图像处理的基本 能补全吗 谢谢了
#include <stdio.h>
#include <stdlib.h>
 
#define TRUE 1
#define FALSE 0
typedef unsigned char BYTE;
 

typedef struct STRUCT_IMAGE{
 int width,height;
 int depth;
 void* pixels;
}ImageData;
 
#define PIXELMAX 255
 
/*
   list2-4.c
*/
typedef struct STRUCT_PIXEL{
 int r; // Red
 int g; // Green
 int b; // Blue
}Pixel;
 
typedef struct STRUCT_COORDINATE{
 int x,y;      // 返回处理坐标
 int buffer1,buffer2,buffer3; 
}Coordinate;
 

ImageData* createImage(int width,int height,int depth);
void disposeImage(ImageData *img);
int readBMPfile(char *fname,ImageData **img);
int writeBMPfile(char *fname,ImageData *img);
int getPixel(ImageData *img,int x,int y,Pixel *pix);
int setPixel(ImageData *img,int x,int y,Pixel *pix);
 
 
#include "image.h"
 
main(int ac,char *av[])
{
 ImageData *image;
 int x,y;
 Pixel pixel1,pixel2;
 
 pixel1.r=255;
 pixel1.g=255;
 pixel1.b=255;
 pixel2.r=0;
 pixel2.g=0;
 pixel2.b=0;
 image=createImage(100,100,24);
 for(y=0;y<100;y++) {
  for(x=0;x<100;x++) {
   if(x%2 == y%2) {
    setPixel(image,x,y,&pixel1);
   }
   else {
    setPixel(image,x,y,&pixel2);
   }
  }
 }
 
 
 //
 //输入你的程序
 //
 
 
 disposeImage(image);
 
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧