php – 输出原始图像流而不是jpeg,即时调整图像大小

我有一个PHP函数,可以为缩略图创建重新调整图像大小.

我遇到了麻烦,因为它只是显示原始图像流而不是实际图像.

我的代码使用了一个名为thumbnail的函数

$thumbnail = thumbnail($item['filename'], 209, 137);
imagejpeg($thumbnail);

我试过投入:

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

但是,这只是期望整页成为图像.我完全不知道从哪里开始,已经在这里工作了一段时间.我宁愿不将图像保存到磁盘,虽然看起来这可能是必要的.

解决方法:

你要么

做到the normal way

这意味着你指向一个网址,并提供一个图像的内容

<img src="myimage.PHP">

和myimage.PHP一个看起来像这样的脚本:

header('Content-type: image/jpeg');
imagejpeg($thumbnail);
die;

这种技术的优点是……正常的做事方式.

要么

内联输出图像

使用data uris内容输出base64 encoded string

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">

这种技术最适合小图像.

它的优点是所有图像都在主http请求中 – 在(可能相当大的)缺点使页面更难编辑/构建,并可能否定浏览器缓存的好处(除非html页面本身被缓存).

正常更容易

关于这个问题中的陈述:

However, this just expects the full page to be an image

这是正确的 – 如果你按照正常的方式使用图像标记的src属性指向你的PHP脚本,而服务器只是一个图像 – 即完全相同的响应就像你用浏览器指向图像文件一样.

除非你有充分的理由以不同的方式做事 – “正常”的方式是一个好的起点.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...