4

ユーザーに画像のURLを入力してもらうとしましょう。

URL検証などの後、画像を取得してPHP変数に保存したいと思います。画像パスではなく、実際の画像自体。

この画像保持変数を他の文字列の間に追加しているのでheader()、画像をエコーする前に用途を変更することはできません。<img>HTMLタグを使用することは可能ですか?私は本当に自分のサーバーに画像をコピーしたくありません...

どうすればよいですか:

  1. 次のような変数に画像を保存します。
  2. ヘッダーを変更せずに、変数から画像をエコーし​​ます。

編集:

私はこの画像を別の変数の中に入れていると上で言いました、例えば:

$str = "blah blah" . $var_holding_img . "more text";

上記の文字列に画像に置き換えられるものを挿入することは可能ですか?後で変数を解析して、$str「abg30j-as」などのランダムなテキストを画像に置き換えることができます。

4

4 に答える 4

5

私は自分の質問に対する答えを見つけました:

最初に、次の名前の別の PHP ファイルを作成しましたimg.php

<?php
$url = $_GET['imgurl'];
/*
Conduct image verification, etc.
*/
$img_ext = get_ext($url); //Create function "get_ext()" that gets file extension
header('Content-type: image/' . $img_ext);
echo file_get_contents($url);
?>

次に、元の PHP ファイルで、次の PHP コードを使用しました。

<?php
$var_holding_img = '<img src="img.php?imgurl=http://example.com/image.png"/>';
$string = "This is an image:<br \>" . $var_holding_img . "<br \>displayed dynamically with PHP.";
echo $string;
?>

このようにして、PHP ファイル「img.php」は適切なヘッダーを使用でき、画像を HTML として他の PHP 変数に挿入できます。

于 2012-09-12T22:14:24.630 に答える
1

どうすればよいですか:

ヘッダーを変更せずに変数から画像をエコーするように、画像を変数に保存します。

これは2つの方法で行うことができます。

方法1では、画像を文字列にシリアル化し、その文字列をセッションに保存します。これは、サーバー側で保存するのとまったく同じですが、セッションGCが自動的にクリアする必要がある点が異なります。次に、使用するIMG SRCは、画像を取得して適切なMIMEタイプの画像として出力するスクリプトにリダイレクトします。

方法2では、画像が十分に小さい場合、それをBASE64としてエンコードし、特別に細工されたIMGタグに出力できます。

http://www.sweeting.org/mark/blog/2005/07/12/base64-encoded-images-embedded-in-html

これにより、接続にかかる時間も節約できます。もちろん、画像は適度に小さくする必要があります。

于 2012-09-12T22:08:01.043 に答える
-1
  1. 実際の画像を変数に保存することはできません。URL を保存するか、画像 (明らかに不要なもの) をサーバーにコピーして、画像へのパスを保存します。
  2. 回答1を参照してください。画像自体をエコーすることはできません。リンクするだけです

編集:もちろん、画像を変数に直接保存できますが、これを行うことはお勧めしません。

于 2012-09-12T21:59:57.510 に答える
-2

いいえ、それは不可能です。何かを提供したい場合は、サーバー上に存在する必要があります。

于 2012-09-12T21:57:49.660 に答える