カウンターに任意の画像を追加して表示するには?
[上に]
[前に]
[次に]
いそぎんちゃく
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に相当する機能はないものでしょうか?
[上に]
[前に]
[次に]