用Perl截取UYVY文件(二进制文件操作示例)


 
#---------------------------------
# Clip Yuv file
# Author: Jthou  2007-06-18
#---------------------------------
#!/usr/bin/perl


if(@ARGV < 5)
{
  
print "usage: clip.pl srcfilename dstfilename width height frameum \n";
  
exit(0);
}

$srcfile = @ARGV[0];
$dstfile = @ARGV[1];
$width = @ARGV[2];
$height = @ARGV[3];
$frmnum = @ARGV[4];

open (INF, $srcfile) or die"\ncan not open $srcfile\n";
open (OUTF, ">$dstfile") or die "\ncan not open $dstfile\n";
binmode INF;
binmode OUTF;

$readlen = $width*$height*2*$frmnum;
$len = read(INF, $data, $readlen, 0);
syswrite(OUTF, $data, $readlen, 0);
close INF;
close OUTF;

其他几个可用的函数
函数名 seek
调用语法 seek (filevar, distance, relative_to);
在文件中向前/后移动,有三个参数:
1、filevar,文件变量
2、distance,移动的字节数,正数向前移动,负数往回移动
3、reletive_to,值可为0、1或2。为0时,从文件头开始移动,为1时,相对于当前位置(将要读的下一行)移动,为2时,相对于文件末尾移动。
运行成功返回真(非零值),失败则返回零,常与tell函数合用。

tell
调用语法 tell (filevar);
返回从文件头到当前位置的距离。

getc
调用语法 $char = getc (infile);
从文件中读取单个字符。
posted @ 2007-06-18 14:26  老猴的技术博客  阅读(956)  评论(0)    收藏  举报