?? runlength_en.h
字號:
/////////////////////////////////////////////
//
// Runlength_en.h
// 文件內(nèi)容:游程編碼
//
// 作 者:丁貴廣
// 制作日期:2003.5.26
// 西安電子科技大學 AI Lab
//
/////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
unsigned char image[256][256];
unsigned char buf[65535];
int width=256,height=256;
/**************************************************************************
runlength_en(FILE *ifile,FILE *ofile)
游程編碼函數(shù)
**************************************************************************/
void runlength_en(FILE *ifile,FILE *ofile)
{
//讀圖象數(shù)據(jù)
int i,j,k,sign;
int tmp,num;
for(i=0;i<height;i++)
fread(&image[i][0],sizeof(unsigned char),width,ifile);
fclose(ifile);
sign=0;k=0;
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
if(sign==0)
{
tmp=image[i][j];
sign=1;
num=1;
}
else
{
if(tmp==image[i][j])
{
if(num<256) num++;
else
{
buf[k]=tmp;
buf[k+1]=num;
k=k+2;
tmp=image[i][j];
sign=1;
num=1;
}
}
else
{
buf[k]=tmp;
buf[k+1]=num;
k=k+2;
tmp=image[i][j];
sign=1;
num=1;
}
}
}
}
fwrite(&width,sizeof(unsigned int),1,ofile);
fwrite(&height,sizeof(unsigned int),1,ofile);
fputc(256,ofile);
fwrite(&k,sizeof(unsigned int),1,ofile);
fwrite(buf,sizeof(unsigned char),k,ofile);
fclose(ofile);
}
/**************************************************************************
runlength_de(FILE *ifile,FILE *ofile)
游程編碼函數(shù)
**************************************************************************/
void runlength_de(FILE *ifile,FILE *ofile)
{
int length;
int i,j,k;
fread(&width,sizeof(int),1,ifile);
fread(&height,sizeof(int),1,ifile);
fgetc(ifile);
fread(&length,sizeof(int),1,ifile);
fread(buf,sizeof(unsigned char),length,ifile);
fclose(ifile);
k=0;
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
if(buf[k+1]>0)
{
image[i][j]=buf[k];
buf[k+1]--;
}
else
{
k=k+2;
image[i][j]=buf[k];
buf[k+1]--;
}
}
}
for(i=0;i<height;i++)
{
fwrite(&image[i][0],sizeof(unsigned char),width,ofile);
}
fclose(ofile);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -