2

stackoverflowから取得した単純なPHPスクリプトは、背景が透明なPNGを生成し、それにテキストを書き込んでから、クライアントブラウザーに直接出力します。

$font = 25;
$string = 'My Text';
$im = @imagecreatetruecolor(300, 300);
imagesavealpha($im, true);
imagealphablending($im, false);
$white = imagecolorallocatealpha($im, 255, 255, 255, 127);
$red = imagecolorallocate($im, 255, 0, 0);
imagefill($im, 0, 0, $white);
$lime = imagecolorallocate($im, 204, 255, 51);
imagettftext($im, $font, 0, 0, 30, $red, "fonts/tt0588m_.ttf", $string);
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);

範囲は、Google Charts(このQRコード画像など)など、URLを介して渡されたパラメータに基づいて画像をフィードする簡単なサービスを取得することです。

これまでのところ、上記のコードで生成された画像をクリックして保存したい場合を除いて、ブラウザはそれをPNG画像として認識しませんが、PHPスクリプトタイプセレクタとして保存にはこのオプションがあります)のみ)、Google Chartsの例とは異なり、リソースがPNGファイルとして明確に識別されます。

ブラウザでこの正しいリソース識別を実現するにはどうすればよいですか?

4

1 に答える 1

11

ブラウザは、[名前を付けて保存...]ダイアログのデフォルト値としてURLのファイル名を使用します。もちろん、別の名前を入力するか、提案された名前(text.php)を使用してファイルを保存し、後で名前を変更することができます。

Content-dispositionヘッダーを使用して、ブラウザーにファイル名を「提案」できます。次に例を示します。

header("Content-type: image/png");
header("Content-disposition: inline; filename=mytext.png");
  • inlineブラウザが画像の表示を試みる必要があることを示唆しています。これをに変更しattachmentて、ブラウザに「名前を付けて保存...」または同様のダイアログを表示するように提案します。
  • filename=選択したファイル名が含まれている必要があります。
于 2012-11-01T18:12:06.137 に答える