我有一个 PHP 网页,它从数据库中获取一个 BLOB 并将其输出为图像。当用户上传这张图片时,我将文件大小(例如491099)存储到数据库中。
当通过我的网页请求图像时,我添加水印,设置HTTP HEADERS
并通过imagejpeg($img)
. 现在的问题是,当我的图像完全加载(几乎不需要时间)时,我的浏览器仍然看起来“忙”(加载指示器旋转)。当通过异步调用请求此页面时,这也会使加载时间变长,即使图像实际上是在短时间内加载的。
当我简单地删除Content-length
标题时,图像就像以前一样被加载,但现在浏览器在加载时立即停止,因此处理时间非常快。
所以看起来浏览器认为(由于我的Content-length
标题)它仍然应该加载一些东西,而实际上它不是......
删除Content-length
标题不是选项,因为在我读过的许多浏览器中都需要这样做。
// set the header for the image
header("Content-length: " . $image->imageSize); //would be 491099 in my example
header("Content-type: " . $image->imageType);
header('Content-Disposition: inline; filename=" '. $image->imageName . '"');
$watermark = imagecreatefrompng('../images/watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$dest_x = ($image->imageWidth - $watermark_width) / 2;
$dest_y = $image->height - $watermark_height - 5;
$img = imagecreatefromstring($image->image);
imagecopymerge($img, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 55);
imagejpeg($img);
(请注意,这$image
是我创建的自定义图像类的一个对象,它包含有关图像的所有信息。)
有人知道我为什么会有这种行为吗?
谢谢!