【发布时间】:2011-10-09 13:19:37
【问题描述】:
如何从以下 HEX 流创建 .gif 文件:
0d 0a 0d 0a 47 49 46 38 39 61 01 00 01 00 80 ff 00 ff ff ff 00 00 00 2c 00 00 00 00 01 00 01 00 00 02 02 44 01 00 3b
3b 是 GIF 文件的终止符
我正在尝试按照http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Example_GIF_file 的指南进行操作
我想在 Perl 或 C/C++ 中实现它。不过任何语言都可以。
非常感谢,
感谢大家的回复。我删除了领先的 '0d 0a 0d 0a'...
这是我目前所拥有的:
#!/usr/bin/perl
use strict;
use warnings;
open(IN,"<test.txt");
open(OUT,">test.gif");
my @lines=<IN>;
foreach my $line (@lines){
$line=~s/\n//g;
my @bytes=split(/ /,$line);
foreach my $byte (@bytes){
print OUT $byte;
}
}
close(OUT);
close(IN);
【问题讨论】:
-
嗯,您将字节写入文件?抱歉,我没发现问题,可能是因为您没有真正提出问题。
-
应该如何将十六进制流转换为 GIF?最简单的解决方案似乎是将其输入 MS Paint 并将其保存为 .gif :P
-
用您感兴趣的任何语言查找“文件 I/O”。打开文件,写入字节,关闭文件。完成。
-
只需在 C 或 C++ 中插入
chr(i) foreach my $i (@image);即可。 -
顺便说一句...您可能想跳过前导 0d 0a 0d 0a