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

我如何:

将图像存储在变量中,以便从变量中回显图像而不更改标题。

您可以通过两种方式做到这一点。

在方式一中,您将图像序列化为字符串,并将字符串保存在会话中。这与将它保存在服务器端完全相同,只是现在会话 GC 应该负责为您清除它。然后,您使用的 IMG SRC 将重定向到一个脚本,该脚本获取图像并将其作为具有正确 MIME 类型的图像输出。

方式二,如果图片足够小,可以将其编码为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 回答