Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php动态创建不同图像大小版本的好主意?_Php_Image Processing_Header - Fatal编程技术网

php动态创建不同图像大小版本的好主意?

php动态创建不同图像大小版本的好主意?,php,image-processing,header,Php,Image Processing,Header,最近,我听说可以通过php的标题(“Content-Type:image/jpeg”)动态获取上传图像的不同版本 因此,不是: <img src="files/myimage-thumb.jpg"> <img src="files/myimage-midsized.jpg"> <img src="files/myimage-original.jpg"> 你可以做: <img src="script/getimage.php?v=thumb">

最近,我听说可以通过php的
标题(“Content-Type:image/jpeg”)动态获取上传图像的不同版本

因此,不是:

<img src="files/myimage-thumb.jpg">
<img src="files/myimage-midsized.jpg">
<img src="files/myimage-original.jpg">

你可以做:

<img src="script/getimage.php?v=thumb">
<img src="script/getimage.php?v=midsized">
<img src="script/getimage.php?v=original">

然后脚本运行并通过
头('Content-Type:image/jpeg')它返回在服务器(客户端?)上生成的映像。。暂时

这是个好主意吗?


我有点怀疑,因为我可以想象它需要更多的时间和性能

我会创建一个新图像并存储在缓存文件夹中,然后下次如果该图像已经存在,我会检索或创建它

大概是这样的:

    function resize_image($filename, $width, $height)
    {
    if (!file_exists($filename) || !is_file($filename))
    {
        return false;
    } 

    $info = pathinfo($filename);
    $extension = $info['extension'];
            $new_image = 'cache/' . utf8_substr($filename, 0, strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;

            if (file_exists($new_image))
                    {
                      return $new_image;
                    }
                return new_iamge($filename, $width, $height);

}

不会。为每个请求动态创建这些图像可能是个坏主意,因为生成它们需要更长的时间。最好的选择是调整图像大小并将调整大小的图像保存在Web服务器上。这样一来,图像只需调整一次大小,它们就成为“常规”图像。我假设您可以动态创建图像一次,保存它们,然后在以下请求中使用保存的版本,但除非您在显示图像之前必须进行某种逻辑测试(访问控制、从数据库检索等)那么通过PHP来提供图像就没有意义了。@YourCommonSense也许我误读了,你链接到的问题是“在飞行中”调整大小应该一直使用,直到你有太多的访问者或者它会导致你的服务器“过热”@cernunnos一个选项是创建一个mod_重写规则,如果请求的(缩放的)图像不存在,它将只指向php脚本,否则缩放并创建它