サイト内の画像のサイズを動的に変更する介入パッケージを実装しています。それはかなりうまく機能しており、私はそれに満足しています。これが私がそれを行う方法の例です:
Route::get('images/ads/{width}-{ad_image}-{permalink}.{format}', function($width, $image, $permalink, $format)
{
$img = Image::make($image->path)
->resize($width, null, function($constraint){
$constraint->aspectRatio();
});
return $img->response($format);
});
最近、ミドルウェアを介してビューを自動圧縮することで、サイトの読み込みを高速化することを考えました。
class HTMLminify
{
public function handle($request, Closure $next) {
$response = $next($request);
$content = $response->getContent();
$search = array(
'/\>[^\S ]+/s', // strip whitespaces after tags, except space
'/[^\S ]+\</s', // strip whitespaces before tags, except space
'/(\s)+/s' // shorten multiple whitespace sequences
);
$replace = array(
'>',
'<',
'\\1'
);
$buffer = preg_replace($search, $replace, $content);
return $response->setContent($buffer);
}
}
それから悪夢が来ました。ブラウザーは、Intervention によって処理された画像が「切り詰められ」、表示されないと報告しています。ミドルウェアをオフにすると、問題なく画像が表示されます。
HTMLminify クラスのコードからわかる限り、ビューから生成された出力が変更され、空白が削除され、画像に干渉する理由がわかりません。
アイデアはありますか?
ありがとうございます。