カウンターに任意の画像を追加して表示するには?

[上に] [前に] [次に]
いそぎんちゃく 1999/11/10(水) 11:22:49
 「とほほカウンター」を改造して、数字の後(または前)に任意の画像を表示するスクリプトを作ろうとしています(<IMG SRC="wwwcount.cgi?gif">で呼び出した時に、数字と画像が並んで表示されるように)。

  for ($i = 0; $i < length($cntstr); $i++) {
    $n = substr($cntstr, $i, 1);
    push(@files, "$n.gif");
  }
  require "gifcat.pl";
  binmode(STDOUT);
  print &gifcat'gifcat(@files);

 の部分を、

  for ($i = 0; $i < length($cntstr); $i++) {
    $n = substr($cntstr, $i, 1);
    push(@files, "$n.gif");
  }
 push(@files, "xxx.gif");   ###### 追加 ############
  require "gifcat.pl";
  binmode(STDOUT);

 と変更すると、

 □□□□□□□□ 12345
    ↑       ↑
 xxx.gifイメージ  数字画像

 (質問は、この部分です)
 ↑こんな感じで表示されますが、任意の画像(xxx.gif)が他サーバーに有る場合はどうしたらよいのでしょうか?

 push文で、"http://xxx.yyy.zzz/xxx.gif"と指定してみたら画像は表示されずに、ブラウザから
 http://......./cgi-bin/wwwcount.cgi?gif
 で呼び出すと、「ERROR」と表示されてしまいました。


 注1:ちなみにローカルの画像でも、画像によっては正常に表示されないみたいです(数字画像とxxx.gifが重なってグチャグチャに表示される時がある)。
 注2:ローカル画像でnameオプションを使うと、数字と任意画像の位置が異常になります。

Syn [E-Mail] 1999/11/10(水) 12:08:49
まず、単純に gifcat.pl の

> ;# 制限事項
> ;#    アニメGIFは連結できません。
> ;#    大きさの異なるGIFファイルは連結できません。

に引っかかっていませんか?

でなければ、 gifcat.pl で使われている stat() でコケ
ているとか。

いそぎんちゃく 1999/11/10(水) 17:09:55
 なるほど・・・。
 gifcat.plは、大きさが違うものや、アニメgifは連結できないんですね…。

 試しに、ローカル画像を数字画像と同じ大きさにしてやってみたら、「注1」や「注2」の現象は起きなくなりました。

 でもそれでは、本来の目的から外れてしまうので、×ということで…。
 
 どこかに、

 ・大きさが違うGIF
 ・アニメGIF

 も、連結可能なものはないでしょうか…。

 (欲を言えば「縦に連結も可能」であれば、もっと嬉しい…)

へにか 1999/11/10(水) 21:57:05
縦じゃなくって恐縮ですが、高さが一緒の画像を横につなげる
ようにgifcat.plを改造したものおよびそのマニアックな応用例を
http://free.prohosting.com/~henika/gifcat/
に作ってみました。もし、改造するのであれば、その参考に
なれば嬉しいです。これは、
http://www.tohoho-web.com/wwwgif.htm
を参考にして作ったものです。
アニメはつなげられないような気がしますが(うろ覚え)・・・

とほほさんへ、
もし、この再配布方法に問題がありましたら削除しますので、
連絡頂けたら幸いです。

いそぎんちゃく 1999/11/11(木) 11:32:04
 へにかさんのgifcat_h.plをさらに改造したら、縦幅が一緒じゃない画像もちゃんと表示されるようになりました。ありがとうございます。

(改造部分)
$GifImage .= pack("C", $ImageHeight & 0x00ff);
$GifImage .= pack("C", ($ImageHeight & 0xff00) >> 8);
 以上二行を以下のように変更
$GifImage .= pack("C", $ImageHeight[$i] & 0x00ff);
$GifImage .= pack("C", ($ImageHeight[$i] & 0xff00) >> 8);
--
$ImageHeight       = ord(substr($buf, $cnt, 1))
 以上一行を以下のように改造
$ImageHeight[$Gif] = ord(substr($buf, $cnt, 1))
--
printf("Image Height:                  %d\n", $ImageHeight);
 以上一行を以下のように変更
printf("Image Height:                  %d\n", $ImageHeight[$Gif]);
(改造は以上)

 ただ、他サーバーの画像を表示できない(ERROR表示となる)のは、相変わらずです………………………。
 引き続き、どなかが助言をお願いします。

いそぎんちゃく 1999/11/11(木) 14:39:13
 え〜、自己レスですが。
 さっき、gifcat.plを見て気がついたんですけど、他サーバーのファイルを指定してERRORになってしまうのは、

 stat($file); や、
 open(IN, "$file"); でダメになってるわけですね。

 この部分が解決できれば、一歩前進できるのですが…。
 なんとか、他サーバーのファイルでも使える、statやopenに相当する機能はないものでしょうか?

[上に] [前に] [次に]