Совсем нет. Просто задача была в том что бы выдать в браузер изображене с ресурса который уже создан. Но не совсем в браузер. А передать его с контроллера в класс Response который уже это сделает.
Я как то затупил про буферизацию хотя она в остальных экшенах используется шаблонизатором.
Задача такова - имеется ссылка на удаленное изображение. Это изображение получается в виде строки обрезается и улетает в файловый кеш где потом будет вылавливатся через nginx. После выдать обрезанное изображение в браузер.
Я собственно сделал так и забыл уже
Добавлено через 03:10 сек.
<?php
//...
$data = curl_exec($ch);
$info = curl_getinfo($ch);
$error = curl_error($ch);
if ($info['http_code'] != 200 || $error || $info['content_type'] != 'image/jpeg') {
log(__FILE__ . ': '. __LINE__);
return $this->errorAction(Response::HTTP_INTERNAL_SERVER_ERROR);
}
$src_img = imagecreatefromstring($data);
$src_w = imagesx($src_img);
$src_h = imagesy($src_img);
// исходное соотношение
//$src_rate = $src_w / $src_h;
// необходимое соотношение картинки
$dst_rate = 1.777777777777778;
// ширина нового изображения
$dst_w = $src_w < 320 ? $src_w : 320;
// высота результата
$dst_h = round($dst_w / $dst_rate);
// новая высота оригинала
$src_h_new = $src_w / $dst_rate;
// отступы вырезаемой части
$src_indent = round(($src_h - $src_h_new) / 2);
$src_x = 0;
$src_y = $src_indent;
// отступы результата
$dst_x = 0;
$dst_y = 0;
$img_hq = imagecreatetruecolor($dst_w, $dst_h);
// копируем прямоугольник
imagecopyresampled($img_hq, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h_new);
imagedestroy($src_img);
imagejpeg($img_hq, "{$path}_HQ.jpg");