PHP: 如何输出图片文件?

PHP: How to output image files?

我想使用 PHP 将图像添加到动态生成的页面(我使用自己的模板系统)。

注意:出于安全原因,我控制图像访问。

包含图像的文件夹位于站点根目录之上,因此无法通过 HTML 链接访问。

我相信有一种方法,其中 PHP returns 文件作为资源,在 header 中指定类型,并且(如果我错了请纠正我)专门为 imagejpeg().

设计的功能

请指教,如果可以写一个简单的例子。

你需要做的输出图像文件的顺序是:

PHP 从文件加载图像,这是 file_get_contentsfopen 打开并访问文件本身。如果该文件是一个特定的图像文件,您可以使用 imagecreatefromjpeg() 打开该文件,这将执行此操作,从 JPEG 源生成一个图像文件。

然后,一旦从文件系统上的任何位置加载文件,包括 Web 根目录之外的目录,PHP 可以使用一些 HTTP Headers 输出上面第 1 点捕获的数据并直接引用加载的图像。

NOTE: this means that the sole output of this PHP file is the image, so file.php === image.jpg in this case.

举个简单的例子:

图像存储在/home/images/image1.jpg

PHP 文件从 /home/site/imagecall.php

运行

PHP 文件说:

<?php
if (file_exists('/home/images/image1.jpg')){
    $image = imagecreatefromjpeg('/home/images/image1.jpg');
    if ($image){
         header('Content-Type: image/jpeg');
         imagejpeg($image);
         imagedestroy($image);
    }  
    else {
        die("Image could not be loaded");
    }
}

这是您的起点,绝不是绝对指南。探索。

有用的参考资料:

http://php.net/manual/en/function.imagecreatefromjpeg.php

http://php.net/manual/en/function.file-get-contents.php