【问题标题】:How to load an Image direcly to a page with PHP? [duplicate]如何使用 PHP 将图像直接加载到页面? [复制]
【发布时间】:2014-09-14 15:40:23
【问题描述】:

我在目录中有一张图片,可以说:test.jpg

我在这个目录中还有另外 2 个 PHP 文件:new.phpload.php

现在,我想做的是,当人们访问网站new.php 时,他们应该需要看到test.jpg 图像。

但是!我还需要,如果我将new.php 放入<img> 标记中,它也应该正确显示图像。

我尝试在img 标记中调用图像,但是当我将new.php 插入img 标记时,它无法正确加载。

<img src="test.jpg">

如果你知道我的意思,那怎么可能让一个 php 像一个图像一样工作?

【问题讨论】:

  • 请提供示例代码说明您的意思..

标签: php html image


【解决方案1】:

试试这个:

new.php

header("Content-Type: image/jpeg");

$im = imagecreatefromjpeg("test.jpg");

imagejpeg($im);
imagedestroy($im);

并像这样使用它

<img src="new.php"/>

【讨论】:

  • 我猜imagejpeg(imagecreatefromjpeg()) 会比简单的readfile() 消耗更多 CPU 资源
  • 是的。但这是一种方法:)
  • +1'ing 因为它是@t3chguy 方法的替代方案。要使其成为有效的 HTML,请在 img 标签的末尾添加 /&gt; - 正确关闭标签。
【解决方案2】:

使用:

header('Content-Type: image/jpeg');
readfile('path/to/image/screenshot.jpg');

其他变体:

@readfile('path/to/image/screenshot.jpg');

如果文件不存在不会有任何错误。

readfile('path/to/image/screenshot.jpg') or die('Image file not found');

如果文件不存在,将使用预定义的错误消息终止您的脚本。

@hd 建议的最有用的替代方法:

$file = 'path/to/image/screenshot.jpg';
readfile(file_exists($file) ? $file : 'path/to/image/image_not_found.jpg');

哪个会选择$file或者如果不存在则默认image_not_found.jpg

对于其他图像类型,您可能需要更改 header() 中的 MIME 类型。

注意:另一个答案和这个答案一样实用,但这个答案不使用内存,而且通常比另一个答案更快、更灵活。

【讨论】:

  • 在阅读之前,我还会检查该文件是否确实存在。你知道,对于那些罕见的场合。
  • 谢谢你,这很好。这就是我一直在寻找的。​​span>
  • @hd,尽管我很讨厌他们;在这种情况下,@readfile(); 是最简单的。
  • Ew。在我的书中,抑制生产中的错误是一个很大的禁忌。一个简单的file_exists 就足够了!
  • 我在想$imagePath = file_exists('path/to/image/screenshot.jpg') ? 'path/to/image/screenshot.jpg' : 'path/to/image/image_not_found.jpg';。这样它将渲染图像,而不显示broken image link
猜你喜欢
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 2014-09-03
相关资源
最近更新 更多