📄 runlength_en.h
字号:
/////////////////////////////////////////////
//
// Runlength_en.h
// 文件内容:游程编码
//
// 作 者:丁贵广
// 制作日期: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)
游程编码函数
**************************************************************************/
void runlength_en(FILE *ifile,FILE *ofile)
{
//读图象数据
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)
游程编码函数
**************************************************************************/
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 + -