タグIMG自動生成スクリプト
(2004.03.14)
リンク先のバナーをホームページに入れる際に、タグIMGを記述しますけれど、バナーのサイズを取得したり、結構な手間なので、
自動的に生成してくれるスクリプトを作りました。CLI(Command Line Interface)とGUI(Graphic User Interface)がシームレスに
連動できるAmigaならではの使い勝手になりました。この便利さは他のOSでは手に入りにくいと思います。
こんな手順でタグIMGを生成できます。
- バナーをダウンロード
- バナーをAmiDockにあるcreatetagimgにドロップ
- タグIMGが表示されるので、それをコピー
- 作成中のHTMLにペースト
- エントリ「ALT=""」に説明を追加
私のバナーでやってみると、こんな風になります。(HTMLが見えるように変更してあります。)
<IMG SRC="http://www.phoenix-c.or.jp/~olfa/logo.png" WIDTH="356" HEIGHT="55" ALT="">
「エントリSRCに自動的にURLが入る訳ないだろう。」と気がついた方々、さすがです。でもAmigaなら入るんですね、これが。
AmigaのブラウザAWebIIでは、画像をダウンロードすると、その画像のURLをファイルノートに設定してくれます。
ファイルノートというのは、ファイル毎に設定できる80バイトのコメントです。ファイルの内容は全く変更されません。
これをWi(うへぇ)wsユーザに説明するのは難しいなぁ。簡単に言うとファイル名の末尾に80バイトの名前を追加した感じです。
本当はウソだけど。(本当?ウソ?)という訳で、URLはファイルノートから取得できる訳です。
はじめに、ドロップしたファイル名をスクリプトに渡すプログラムcreatetagimgです。
#include <stdio.h>
#include <workbench/startup.h>
#include <string.h>
#include <stdlib.h>
#include <proto/dos.h>
#include <proto/exec.h>
char *VersionInfo = "$VER: drop file to CLI script. Ver 1.00 (2004/03/13)";
int main(int argc, char **argv)
{
UBYTE** tooltypearray = ArgArrayInit((LONG)argc, (UBYTE**)argv);
STRPTR script = ArgString(tooltypearray, "SCRIPT", "");
WBStartup *wbs = (WBStartup *)argv;
if (!argc && wbs && 2 == wbs->sm_NumArgs)
{
char sBuff[256];
memset(sBuff, 0x00, sizeof(sBuff));
BOOL bSuc = NameFromLock(wbs->sm_ArgList[1].wa_Lock, sBuff, (unsigned long)sizeof(sBuff));
if (bSuc && wbs->sm_ArgList[1].wa_Name[0])
{
bSuc = AddPart((char *)sBuff, (char *)wbs->sm_ArgList[1].wa_Name, sizeof(sBuff));
}
if (!bSuc)
{
strcpy((char*)sBuff, (char*)wbs->sm_ArgList[1].wa_Name);
}
char sExec[256];
memset(sExec, 0x00, sizeof(sExec));
sprintf(sExec, "%s \"%s\"", script, sBuff);
printf("%s\n", sExec);
Execute(sExec, NULL, NULL);
}
return 0;
}
つぎに、AmigaDOSのスクリプト「createtagimg.script」です。途中の「gg:setup-gg」はperlを使うためのAssignが入ってます。
;
; $VER: create tag IMG. 1.0, 2004/03/12
;
.KEY imagefile/A
SET localscript ram:temp_createtagimg.script
echo >$localscript "list *"<imagefile>*" LFORMAT=*"%C*""
set comment `execute $localscript`
delete $localscript QUIET
gg:setup-gg
perl createtagimg.pl "<imagefile>" "$comment"
さいごに、Perlのスクリプト「createtagimg.pl」です。
#!/usr/local/bin/perl -w
# $VER: create tag IMG. 1.0, 2004/03/12
use Image::Size;
my($imagefile, $url) = @ARGV;
$imagefile =~ s/([^:]*):/\/$1\//;
my($w, $h, $t) = imgsize($imagefile);
print '<IMG SRC="' . $url . '" WIDTH="' . $w . '" HEIGHT="' . $h . '" ALT="">';
たったこれだけで、随分と手間が省けました。画像サイズの取得はImage::Sizeのサブルーチンimgsizeがやってくれるので他のOSで
も使えそうですね。ただ、AmigaDOSのスクリプトのほうは、URLを取得するAmigaならではの機能を使っているので、チャレンジする
とOSの良い勉強になることでしょう。そして、AmigaOSからどのくらい遅れているか実感してください。プログラムcreatetagimgは
Workbenchの機能を使っていて、複数のファイルを選択してダブルクリックした際に、1個目に選択したファイルをプログラムとして
起動して、2個目以降に選択したファイルをデータとしてそのフルパスを1個目のプログラムに渡す仕掛けを利用しています。だか
ら、他のOSでは難しそうです。どんなOSでもいいからAmigaと競争できるようになってほしいなぁ。ねぇまだ?