3

PNG 画像が必要ですが、それにアクセスすると、PHP スクリプトが実行されます。PHP スクリプトは、送信する画像を決定する必要があります (if ステートメントなどを使用して)。次に、PHP スクリプトが Web サーバーのどこかから画像ファイルを読み取り、出力する必要があります。

ここに問題があります。.png ファイルを取得して PHP コードを入れても機能しませんが、.php 拡張子を使用すると機能し、画像を他の Web サイトに埋め込むこともできます。 PHPは送信する画像を決定できますが、その画像を直接表示したい場合(URLをアドレスバーにコピー)、機能せず、画像のプレーンなコンテンツ(ランダムなジブリッシュ)が表示されます。

誰が何をすべきか知っていますか?

また、これはスタック オーバーフローに関する私の最初の質問です。何か間違ったことをしている場合は教えてください。

4

4 に答える 4

8

Content-Typeヘッダーを送信する必要があります。

の場合png:

header('Content-Type: image/png');

その他の場合は、またはまたはまたはその他に変更pngします。jpggifbmp

header()出力に何かを書き込む前に関数を使用する必要があることに注意してください。

于 2013-08-15T12:33:49.920 に答える
2

まず、画像image.pngが php からアクセスできる場所にあることを確認してください。

次に、php スクリプトimage.phpを作成します。

<?php
header('Content-Type: image/png');
readfile('image.png');

スクリプトは、PNG 画像のように動作するようになりました。

于 2013-08-15T12:34:53.973 に答える
2

画像を送信する方法を知っているようですが、問題は、URL を PNG 画像のように見せたいことです。

できることがいくつかあります。まず、Web サーバーが URL 書き換えをサポートしている場合 (Apache のmod_rewriteモジュールなど)、ユーザーがスクリプトにアクセスするように書き換えルールを使用できますhttp://example.com/generated_image.pngが、サーバーはこの URL を PHP スクリプトを直接指すように変換/書き換えます。のように/var/www/image_generator.php

別のオプションは、実際にはスクリプトに「 generated_image.png 」という名前を付けますが、Web サーバーに強制的に PHP スクリプトのように処理させることです。たとえば、Apache では次のように試すことができます。

<Location /generated_image.png>
    ForceType application/x-httpd-php
</Location>

最後の注意として、実際には URL について心配していなくても、ユーザーがファイルをディスクに保存することを決定した場合に使用されるファイル名について心配している場合は、単にContent-DispositionHTTP ヘッダーを応答で使用できます。PHP では、次のようになります。

<?php
header("Content-Disposition: inline; filename="generated_image.png");
?>

これにより、URL が何であるかは関係ありません。ユーザーが Web ブラウザーを介して画像を保存する場合、Web ブラウザーはデフォルトのファイル名として「 generated_image.png 」を提供する必要があります。

于 2013-08-15T12:46:09.923 に答える
1

Simplest version I know...

<?php
header('Content-Type: image/png');
if(whatever)
  {
    $image=your_image_select_function();
  }
// as suggested by sh1ftst0rm with correction of unmatched quotes.
header('Content-Disposition: inline; filename="'.$your_name_variable.'"');
readfile($image);
?>

Then, you treat it like an image file. That is, if this is "pngmaker.php" then, in your HTML document, you do

<img src="pngmaker.php">

You can even do

<img src="pngmaker.php/?id=123&user=me">
于 2013-08-15T12:37:24.880 に答える