加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP动态图像

发布时间:2020-12-13 22:43:46 所属栏目:PHP教程 来源:网络整理
导读:我接管了一个动态生成调整大小的图像和缩略图的CodeIgniter PHP站点. 以下是网站中img标记的示例,该标记生成100px x 100px缩略图: img src="/media/image/ImageName.jpg/100/100" / 这是通过使用帮助程序生成的: echo img('media/image/ImageName.jpg/100/
我接管了一个动态生成调整大小的图像和缩略图的CodeIgniter PHP站点.

以下是网站中img标记的示例,该标记生成100px x 100px缩略图:

<img src="/media/image/ImageName.jpg/100/100" />

这是通过使用帮助程序生成的:

echo img('media/image/ImageName.jpg/100/100');

媒体控制器中的图像功能中存在一些逻辑,它首先检查缓存文件夹,然后提供缓存的图像(如果存在).

看起来这仍然不是一种优雅的方法,并且看看像SilverStripe这样的其他PHP框架的做法,做这样的事情会更好:

echo img_link('ImageName.jpg',100,100);

帮助器中的这个新的img_link函数将首先检查缓存的图像,并将链接直接写入图像文件或生成新图像并将直接链接传递给html.

我的想法是,如果PHP使用这种类型的代码服务每个img

$this->output->set_content_type('jpeg')->set_output(file_get_contents($file_path));

它永远是低效的.

想什么?

解决方法

我同意,我已经完成了你提出的建议(如果已经缓存,则直接编写链接)并且它工作正常.

唯一一次我认为你会被抓住是因为你的html被缓存并且你已经删除了缓存的图像,所以现在已经破坏了到imagefile的直接链接.

在我的情况下,我从来没有删除缓存的图像,所以还没有打动.

我可以看到它是一个问题的唯一其他情况是你有私人图像.在这种情况下,php需要在显示图像之前先检查谁拥有权限,你不能只是将缓存的文件作为直接链接提供,因为人们可以共享该直接链接,并且安全性将不再适用.

如果你确实需要这样做,并且你能够在apache上安装模块(假设你使用的是apache),那么有一个模块“x-sendfile”可以让你将文件传递过程切换回apache,而不是通过PHP.这适用于php可能超时的大文件等

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读