ImageMagikで画像を生成して標準出力し、ブラウザに画像を表示したとき、この画像の名前を指定しておくことはできないのでしょうか?


画像を右クリックして、名前を付けて保存しようとすると、CGI名がファイル名になり、jpgなのかpngなのかもわかりません。あらかじめファイル名を指定しておくことはできないのでしょうか?

以下のように書いています。
ファイルはサーバに残す必要はありません。(むしろ残さない方がいい)

use Image::Magick;
# オブジェクト作成
my $image = Image::Magick->new;

# 画像読み込み
$image->Read(sprintf($file, $id));

print "Content-type: image/jpg\n\n";
binmode STDOUT;
$image->Set(quality=>95);
$image->Write('jpg:-');

exit;

回答の条件
  • 1人2回まで
  • 登録:2008/11/28 00:32:14
  • 終了:2008/12/05 00:35:02

回答(4件)

id:hujikojp No.1

hujikojp回答回数101ベストアンサー獲得回数72008/11/28 09:23:50

ポイント35pt

*.cgi の名前のCGI scriptで画像を返信するのではなく、一時的に結果をファイルに出力しておき、そこに redirectすればで実現できると思います。

ファイルがserverに残ってしまうのが嫌であれば、http://../foo.cgi/bar.jpeg などのURLで foo.cgiに redirectし、そこで転送後に消すなどすればいいのかも。

あとは、ファイル名が固定でよい(拡張子が .cgiなどになるのだけが問題)ならば、CGI scriptの拡張子を .jpgなどにして、そのdirectory だけ AddHandlerなどしておく手もあります。

id:dingding

ありがとうございます。この方法でうまく行きました。

2008/11/29 18:22:31
id:goodvn No.2

goodvn回答回数228ベストアンサー獲得回数182008/11/28 12:58:38

ポイント35pt

以下のようにすれば指定できます

print "Content-type: image/jpg; name=hoge.jpg\n";
print "Content-disposition: attachment; filename=hoge.jpg\n";
print "\n";
binmode STDOUT;
id:dingding

ありがとうございます。なぜかうまくいきませんでした

2008/11/29 18:22:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません