|
最近写个程序要把从摄像头得到的图片存到sd卡上(时间间隔0.5s)..所以需要
给每个图片文件起唯一的名子.
我现在用的方法大致如下:
#define PATH "/usr/sdcard/"
int save_jpeg(unsigned char *src, int jpegsize)
/*src指向的地址中存放着jpegsize大小的图像数据*/
{
FILE *fp;
int i,j;
time_t timep;
char filename2[FILE_NAME_LENGTH];
char filename3[FILE_NAME_LENGTH];
char filepath[60]=PATH;
char filepath_backup[60];
char fileapp[]=".jpg";
char filenumtable[9]="123456789";
char filenum[3]="_0";
time (&timep);
bzero(filename3,FILE_NAME_LENGTH);
strcpy(filename2,ctime(&timep)); //filename2数组中存入了当前的时间字符串
/* 下面循环的作用是去掉filename2中的空格之类的字符,存入filename3中 */
j=0;
for(i=0;i<FILE_NAME_LENGTH;i++)
{
if((filename2!=' ')&&(filename2!=':')&&(filename2!='\n'))
{
filename3[j]=filename2;
j++;
}
else if((filename2==' ')&&(filename3[j-1]!='_'))
{
filename3[j]='_';
j++;
}
}
strcat(filepath,filename3);
memcpy(filepath_backup,filepath,60);
/* 区分同一秒内生成的文件名 */
for(i=0;i<10;i++)
{
filenum[1]=filenumtable;
strcat(filepath,filenum);
strcat(filepath,fileapp);
if((fp=fopen(filepath, "r"))==NULL)
{
fp=fopen(filepath, "w");
break;
}
fclose(fp);
memcpy(filepath,filepath_backup,60);
}
fwrite(ptframe, jpegsize, 1, fp);
fclose(fp);
return(1);
}
我感觉我的方法不太科学,请问大家有没有什么聪明的办法啊! |
|