1

docroot の外で画像を使用していて、その画像を関数内に表示したいと考えています。

これを正しく行うにはどうすればよいですか?

これが私がこれまでに持っているものです:(両方の関数は同じファイルにあります)

function page(){
  echo'
    test<br />
    '.output().'
  ';
}

function output(){
    header("Content-Type: image/gif");
    readfile( '../../../dirOutsideDocRoot/test.gif' );
}

これは現在、画像を出力しますが、その上の「テスト」を見ることができません。を使用して画像をページ機能に入れることは可能headerですか?

4

3 に答える 3

1

あなたがやろうとしているのは、同じページに画像とテキストを表示することのようです。そのためには、テキストとimg、画像だけを送り返す別のphpページを指すタグが付いたページを作成する必要があります。

ヘッダーContent-Typeは、ページ全体が画像であることをブラウザに通知します。ただし、phpはデータがすでに送信されていると言って失敗し、ヘッダーを出力できないため、これも発生しません。

お役に立てれば。

編集:クトゥルフが言ったように、次のようにbase64で画像を埋め込むこともできます:

function output(){
    $imgbinary = fread(fopen('../../../dirOutsideDocRoot/test.gif', "r"), filesize($filename));
    echo '<img src="data:image/gif;base64,' . base64_encode($imgbinary).'" />';
}

phpでのbase_64エンコーディングの詳細については、http://php.net/manual/en/function.base64-encode.phpを参照してください

于 2012-11-10T20:19:30.360 に答える
1

クライアントに送信する最終的なコンテンツは、1つのコンテンツタイプのみを持つことができます。画像またはテキストのいずれか。両方を1つのページにまとめたい場合(画像がファイルに書き込まれていない場合)、次の方法でbase64に画像を書き込むことができます。

data:[<MIME-type>][;charset=<encoding>][;base64],<data>

あなたの場合、

data:image/gif;base64,<base64_encoded_image>

データURIスキームを参照してください


次のようなものが機能します:(テストされていません)

$img = fread(fopen($path, "r"), filesize($path));
$base64 = "data:image/gif;base64," . base64_encode($img);
于 2012-11-10T20:19:08.337 に答える
1

2 つの php ページが必要です。

ページ1:

echo'
    test<br /><img src="page2.php"/>';

ページ2:

header("Content-Type: image/gif");
readfile( '../../../dirOutsideDocRoot/test.gif' );
于 2012-11-10T20:34:17.800 に答える