linux - 从 SMIL 文件中提取 jpeg
问题描述
我需要我的 perl 脚本从 SMIL 文件中提取 jpeg。我看到的唯一方法是在 linux 中使用以下命令。
xxd -c1 -p wapenc\?T\=mavodi-6-13b-1f-4-7c-4806803 | tr "\n" " " | sed -n -e 's/.*\(ff d8 ff .*\)/\1/p' | xxd -r -p > image.jpeg
将其包装在 system() 调用中不起作用。将这样一系列命令合并到 perl 中的正确方法是什么?
解决方案
在对示例文件进行测试后,我将 oneliner 从注释转换为正确的脚本。
脚本的核心是正则表达式/(\xff\xd8\xff.*?\x{ff}\x{d9})/s
,它提取 JPEG 标头的开头直到(包括)JPEG 标记的结尾\xff\xd9
,同时仍然允许其中包含换行符等(/s
修饰符):
#!perl
use strict;
use warnings;
$/ = undef;
my( $filename ) = 'wapenc_T=mavodi-6-13b-1f-4-7c-4806803';
my( $outfilename ) = "$filename-thumbnail.jpeg";
open my $fh, '<:raw', $filename
or die "Couldn't read '$filename': $!";
my $buffer;
{
local $/;
$buffer = <$fh>;
};
open my $output, '>:raw', $outfilename
or die "Couldn't write to '$outfilename': $!";
if( $buffer =~ /(\xff\xd8\xff.*?\x{ff}\x{d9})/s ) {;
print $output $1
};
推荐阅读
- bash - 如果我 curl 一个原始脚本并将该输出通过管道传输到 bash 解释器,我如何保留在检索到的脚本中设置的环境变量?
- python-3.x - 我怎样才能为这个类写一个单元测试?
- scala - Akka Cluster - 从崩溃的 actor 中恢复数据
- .htaccess - .htaccess 中不需要的重写
- html - 使用第二个旋转 div 创建 div
- sql-server - 获取下游序列号的上游用户的 SQL 查询
- javascript - Anim.js - 当我只想触发悬停的元素时输入什么作为目标
- cron - 修改一个 cronjob 使其从下个月开始每半小时运行一次
- c# - C# XML 读取和编辑子值
- excel - 如何比较 A/B 列,并从 A 列返回与 B 不匹配的值