2012-03-28 11 views
2

MySQLデータベースにBLOBとして保存されたイメージのサイズを動的に変更するPHPページを作成しました。私は一時的なファイルを保存せずに、この場でこれをやっています。ヘッダーで送信するContent-Lengthを決定する方法はありますか?動的にサイズ変更されたイメージのコンテンツ長PHP

imageecopyresampled()でイメージを作成し、imagepng()などを使用してイメージデータを出力しました。代わりにあなたの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); 

答えて

4

、これを試してみてください。

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

また、サーバーはあなたのために自動的にContent-Lengthを処理する必要があります。

+0

あなたの最後のコメントは、imagepng()コールによって自動的に計算されるためContent-Lengthを送信する必要はないということですか?私は、ブラウザがダウンロードの進行状況を知るようにContent-Lengthを持つことが良いことを読んできました。 – user722302

+0

それはあなたのサーバがどのように設定されているかに依存しますが、本当に 'Content-Length'が送られているはずです。サーバーが見る限り、(Content-Typeヘッダーのおかげで)イメージを提供する必要があることがわかりますので、関連するヘッダーも送信します。 –

+0

ありがとう。私は私のローカルMAMP環境では見ていないが、私は生産をチェックする。 – user722302

関連する問題