AWS-Lambda
view release on metacpan or search on metacpan
examples/cgi/WwwCounter/gifcat.pl view on Meta::CPAN
;# ====================================================================
;#
;# gifcat.pl: GIFãã¡ã¤ã«é£çµã©ã¤ãã©ãª Ver1.61
;#
;# Copyright (c) 1997,2002 http://tohoho.wakusei.ne.jp/
;#
;# è使¨©ã¯æ¾æ£ãã¾ããããèªç±ã«ä½¿ç¨ã»æ¹é ã»åé
å¸å¯è½ã§ãã
;#
;# åºæ¬çãªä½¿ãæ¹
;# require "gifcat.pl";
;# open(OUT, "> out.gif");
;# binmode(OUT); # MS-DOS ã Windows ã®å ´åã«å¿
è¦ã§ãã
;# print OUT &gifcat'gifcat("xx.gif", "yy.gif", "zz.gif");
;# close(OUT);
;#
;# ãããã°ç¨(GIFã®è§£æåºå)
;# require "gifcat.pl";
;# &gifcat'gifprint("xx.gif", "yy.gif", "zz.gif");
;#
;# å¶éäºé
;# ã¢ãã¡GIFå士ãé£çµãããã¨ã¯ã§ãã¾ããã
;# ã¢ãã¡GIF対å¿ã®ãã©ã¦ã¶ã§ãªããã°ãæåã®ç»åãã表示ããã¾ããã
;# é«ãã®ç°ãªãGIFãã¡ã¤ã«ã¯é£çµã§ãã¾ããã
;#
;# ææ°çå
¥æå
;# http://tohoho.wakusei.ne.jp/wwwsoft.htm
;#
;# æ´æ°å±¥æ´:
;# 1997.05.03 åçã
;# 1997.05.10 ã¹ãã«ãã¹ä¿®æ£ã
;# 1997.05.29 ãµã¤ãºã®ç°ãªãã«ã©ã¼ãã¼ãã«ã«å¯¾å¿ã
;# 1997.07.07 ã¨ã©ã¼çºçæã«exit()ããªãããã«ä¿®æ£ã
;# 1998.05.05 TrailerãæããªãGIFãã¡ã¤ã«ãé£çµã§ããªããã°ãä¿®æ£ã
;# 1998.05.05 横å¹
ã256ãè¶
ããGIFã®åºåãã§ããªããã°ãä¿®æ£ã
;# 1998.05.05 gifprint()ã§é£çµçµæãåºåããªãããã«ä¿®æ£ã
;# 1998.05.10 é£çµã§ããªãGIFç»åãããã¨ãããã°ãä¿®æ£ã
;# 1998.08.20 Ver1.50 夿°ã®åæåãè¡ãããã«ä¿®æ£ã
;# 1998.08.20 Ver1.50 ééGIFã«å¯¾å¿ã
;# 1999.05.30 Ver1.51 åä½ã«ã¯é¢ä¿ãªãã¿ã¤ããã¹ä¿®æ£ã
;# 1999.10.11 Ver1.52 ã³ã¡ã³ãã®ä¿®æ£
;# 2000.05.21 Ver1.53 å¹
ã®ç°ãªãGIFã®é£çµã«å¯¾å¿
;# 2000.06.04 Ver1.54 perl -wcã®warning対å¿
;# 2000.06.04 Ver1.55 ã¤ã³ã¿ã¬ã¼ã¹GIFé¨ã®ã³ã¼ããã¹ãä¿®æ£ã
;# 2000.09.17 Ver1.56 é£ç¶å¼ã³åºãã®éã®ãã°ä¿®æ£
;# 2000.11.28 Ver1.57 ã¤ã³ã¿ã¬ã¼ã¹GIFé¨ã®ã³ã¼ããã¹ãä¿®æ£ã
;# 2001.09.14 Ver1.58 gifcatãé£ç¶ã§å¼ã³åºãéã®ä¸å
·åä¿®æ£ã
;# 2001.10.04 Ver1.59 åä¸ã
;# 2001.11.25 Ver1.60 gifprintã®ä¸å
·åä¿®æ£ã
;# 2002.06.10 Ver1.61 Netscape 6.*ã§1æ¡ç®ã表示ãããªãåé¡ã«å¯¾å¿ã
;#
;# ====================================================================
package gifcat;
$pflag = 0; # print flag
;# =====================================================
;# gifcat'gifprint() - print out GIF diagnostics.
;# =====================================================
sub gifprint {
$pflag = 1;
&gifcat(@_);
$pflag = 0;
}
;# =====================================================
;# gifcat'gifcat() - get a concatenated GIF image.
;# =====================================================
sub gifcat {
@files = @_;
$Gif = 0;
$leftpos = 0;
$logicalScreenWidth = 0;
$logicalScreenHeight = 0;
$useLocalColorTable = 0;
foreach $file (@files) {
$size = -s $file;
open(IN, "$file") || return("ERROR");
binmode(IN);
read(IN, $buf, $size) || return("ERROR");
close(IN);
$cnt = 0;
&GifHeader();
while (1) {
$x1 = ord(substr($buf, $cnt, 1));
if ($x1 == 0x2c) {
&ImageBlock();
} elsif ($x1 == 0x21) {
$x2 = ord(substr($buf, $cnt + 1, 1));
if ($x2 == 0xf9) {
&GraphicControlExtension();
} elsif ($x2 == 0xfe) {
&CommentExtension();
} elsif ($x2 == 0x01) {
&PlainTextExtension();
} elsif ($x2 == 0xff) {
&ApplicationExtension();
} else {
return("ERROR");
}
} elsif ($x1 == 0x3b) {
&Trailer();
last;
} elsif ($cnt == $size) {
last;
} else {
return("ERROR");
}
}
undef($buf);
$Gif++;
}
if ($pflag == 1) {
return;
}
$GifImage = "GIF89a";
$GifImage .= pack("C", $logicalScreenWidth & 0x00ff);
$GifImage .= pack("C", ($logicalScreenWidth & 0xff00) >> 8);
$GifImage .= pack("C", $logicalScreenHeight & 0x00ff);
$GifImage .= pack("C", ($logicalScreenHeight & 0xff00) >> 8);
if ($useLocalColorTable) {
$PackedFields18[0] &= ~0x80;
}
$GifImage .= pack("C", $PackedFields18[0]);
$GifImage .= pack("C", $BackgroundColorIndex);
$GifImage .= pack("C", $PixelAspectRatio);
if ($useLocalColorTable == 0) {
$GifImage .= $globalColorTable[0];
}
for ($i = -1; $i < $Gif; $i++) {
$j = ($i == -1) ? 0 : $i;
$GifImage .= pack("CCC", 0x21, 0xf9, 0x04);
$GifImage .= pack("C", $PackedFields23 | $TransparentColorFlag[$j]);
$GifImage .= pack("CC", 0x00, 0x00);
$GifImage .= pack("C", $TransparentColorIndex[$j]);
$GifImage .= pack("C", 0x00);
( run in 1.122 second using v1.01-cache-2.11-cpan-d7f47b0818f )