人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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;

●質問者: dingding
●カテゴリ:インターネット ウェブ制作
✍キーワード:CGI EXIT jpg PNG print
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● hujikojp
●35ポイント

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

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

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

◎質問者からの返答

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


2 ● goodvn
●35ポイント

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

print "Content-type: image/jpg; name=hoge.jpg\n";
print "Content-disposition: attachment; filename=hoge.jpg\n";
print "\n";
binmode STDOUT;
◎質問者からの返答

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


3 ● uiuiui
●10ポイント

http://q.hatena.ne.jp/1227799931


4 ● uiuiui
●10ポイント

http://q.hatena.ne.jp/1227799931

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ