PHPでリクエストされたサイズの画像を表示したい。Silex/Symfonyレスポンスが画像データを正しく返さない
作業コード。フレームワークなし。
<?php
require_once __DIR__ . '/vendor/autoload.php';
define('BASE_SIZE', 1000);
$original = imagecreatefrompng('image.png');
$size = $_REQUEST['size'];
if($size == BASE_SIZE) {
$out = $original;
}
else {
$out = imagecreatetruecolor($size ,$size);
imagecopyresampled($out, $original, 0, 0, 0, 0, $size, $size, BASE_SIZE, BASE_SIZE);
}
ob_start();
imagepng($out, null, 9);
$content = ob_get_contents();
ob_end_clean();
header('Content-type: image/png');
echo $content;
?>
このコードは画像を正しく示しています。そしてここに出力プレビューがあります。
コードを動作しません。シレックスの使用。
$app->get('/resize/{size}', function (Symfony\Component\HttpFoundation\Request $request, $size) use ($app) {
define('BASE_SIZE', 1000);
$original = imagecreatefrompng('image.png');
if($size == BASE_SIZE) {
$out = $original;
}
else {
$out = imagecreatetruecolor($size ,$size);
imagecopyresampled($out, $original, 0, 0, 0, 0, $size, $size, BASE_SIZE, BASE_SIZE);
}
ob_start();
imagepng($out, null, 9);
$content = ob_get_contents();
ob_end_clean();
$response = new Symfony\Component\HttpFoundation\Response($content, 200);
$response->headers->set('Content-Type', 'image/png');
$response->headers->set('Content-Disposition', 'inline');
return $response;
});
このコードは壊れた画像を示しています。そしてここに出力プレビューがあります。
そして、これはヘッダです。
のCache-Control:キャッシュなし、プライベート 接続:キープアライブ コンテンツディスポジション:インライン のContent-Type:画像/ PNG日:火、2017年7月18日午前6時15分56秒GMT サーバー:Apacheの 転送エンコード:1.1 vegur
私は答えの近くだと思う、しかし、誤った出力の最初に「<」があります: 経由チャンク。 substrで正しく削除できませんでした。
私は本当に困っています。何か案が?
それだけです!どうもありがとうございます! – shot