我编写了一个PHP页面来动态调整MySQL数据库中作为BLOB存储的图像的大小。我在不储存任何临时文件的情况下就这么做了。有没有什么方法可以确定要在头中发送的内容长度?
我用imagecopyresampled()创建了图像,并使用imagepng()等输出图像数据。

$origImage = imagecreatefromstring($image['data']);
$newImage = imagecreatetruecolor($width, $height);

// preserve alpha
imagealphablending($newImage, false);
imagesavealpha($newImage, true);

$resizeSuccess = imagecopyresampled($newImage, $origImage, 0, 0, 0, 0, $width, $height, $image['width'], $image['height']);

header('Content-Type: image/png');
imagepng($newImage, null, $pngCompression, PNG_NO_FILTER);
imagedestroy($newImage);

最佳答案

请尝试以下操作,而不是您的imagepng呼叫:

ob_start(function($c) {
    header("Content-Length: ".strlen($c));
    return $c;
});
imagepng($newImage, null, $pngCompression, PNG_NO_FILTER);
obj_end_flush();

此外,服务器应该为您自动处理Content-Length

09-18 01:14