Как получить в переменную изображение? - Visavi.net
https://visavi.net/
RSS - Visavi.nethttps://visavi.net/assets/img/images/logo_small.pngRSS - Visavi.net
https://visavi.net/
[email protected] (admin)[email protected] (admin)Mon, 23 Dec 2024 07:49:32 +0300<pre class="prettyprint"><?php
// create mq image
$mq_w = 128;
$mq_h = $mq_w/$dst_rate;
$img_mq = imagecreatetruecolor($mq_w, $mq_h);
imagecopyresampled($img_mq, $img_hq, 0, 0, 0, 0, $mq_w, $mq_h, $dst_w, $dst_h);
imagejpeg($img_mq, "{$path}_MQ.jpg");
$response = new Response();
switch($type) {
case 'HQ':
ob_start();
imagejpeg($img_hq);
$response->setContent(ob_get_clean());
$response->headers->set('Content-Type', image_type_to_mime_type(IMAGETYPE_JPEG));
$response->setStatusCode = 200;
break;
case 'MQ':
ob_start();
imagejpeg($img_mq);
$response->setContent(ob_get_clean());
$response->setStatusCode = 200;
$response->headers->set('Content-Type', image_type_to_mime_type(IMAGETYPE_JPEG));
break;
default:
return $this->errorAction(404);
}
imagedestroy($img_hq);
imagedestroy($img_mq);
return $response;
</pre>
https://visavi.net/topics/42506/684805
Как получить в переменную изображение? T-SSat, 25 Jul 2015 13:21:19 +0300Сообщенияhttps://visavi.net/topics/42506/684805Совсем нет. Просто задача была в том что бы выдать в браузер изображене с ресурса который уже создан. Но не совсем в браузер. А передать его с контроллера в класс Response который уже это сделает.<br>
Я как то затупил про буферизацию хотя она в остальных экшенах используется шаблонизатором.<br>
Задача такова - имеется ссылка на удаленное изображение. Это изображение получается в виде строки обрезается и улетает в файловый кеш где потом будет вылавливатся через nginx. После выдать обрезанное изображение в браузер.<br>
Я собственно сделал так и забыл уже<br>
<br>
<em><span style="font-size:x-small">Добавлено через 03:10 сек.</span></em><br>
<pre class="prettyprint">
<?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");
</pre>
https://visavi.net/topics/42506/684804
Как получить в переменную изображение? T-SSat, 25 Jul 2015 13:17:09 +0300Сообщенияhttps://visavi.net/topics/42506/684804Вообще-то можно сделать вот так<br>
<pre class="prettyprint"><?php
$src = "http://visavi.net/images/img/logo.png";
$original = imagecreatefromstring(file_get_contents($src));
$copy = imagecreatetruecolor(imagesx($original), imagesy($original));
imagecopy($copy, $original, 0, 0, 0, 0, imagesx($original), imagesy($original));
imagedestroy($original);
var_dump($original, $copy);
</pre>
resource(4, Unknown)<br>
resource(5, gd)<br>
<br>
но тут вряд ли получится сэкономить
https://visavi.net/topics/42506/684796
Как получить в переменную изображение? Вантуз-менSat, 25 Jul 2015 00:55:47 +0300Сообщенияhttps://visavi.net/topics/42506/684796Как я понял нужно клонировать переменную с ресурсом, даже не знаю есть ли такая возможность<br>
<pre class="prettyprint"><?php
$src = "http://visavi.net/images/img/logo.png";
$image = imagecreatefromstring(file_get_contents($src));
$image2 = $image;
imagedestroy($image2);
var_dump($image === $image2);</pre>
$image и $image2 идентичны<br>
<br>
поэтому самый явный вариант использовать результат функции file_get_contents($src) в твоем случае это $data
https://visavi.net/topics/42506/684795
Как получить в переменную изображение? Вантуз-менSat, 25 Jul 2015 00:40:33 +0300Сообщенияhttps://visavi.net/topics/42506/684795Ладно воспользовался буферизацией. Вопрос решен.
https://visavi.net/topics/42506/684791
Как получить в переменную изображение? T-SSat, 25 Jul 2015 00:25:37 +0300Сообщенияhttps://visavi.net/topics/42506/6847914. <strong>T-S</strong>, memcache apc не?
https://visavi.net/topics/42506/684778
Как получить в переменную изображение? АнтонFri, 24 Jul 2015 22:48:59 +0300Сообщенияhttps://visavi.net/topics/42506/6847783. <strong>Reflesh</strong>, а лишний раз прочитать пост не?<br>
<blockquote class="blockquote">Можно ли как то обойтись не сохраняя img_object в файл?<br>
По поводу использования рессурсов и прочее блалабла я вкурсе. Просто не хочу лишний раз винт напрягать</blockquote>
https://visavi.net/topics/42506/684776
Как получить в переменную изображение? T-SFri, 24 Jul 2015 21:11:47 +0300Сообщенияhttps://visavi.net/topics/42506/6847762. <strong>T-S</strong>, $var = filge_get_contents() не ?
https://visavi.net/topics/42506/684774
Как получить в переменную изображение? RefleshFri, 24 Jul 2015 20:01:36 +0300Сообщенияhttps://visavi.net/topics/42506/684774Как вариант нашел <pre class="prettyprint"><?php
ob_start();
imagejpeg($img_object);
$data = ob_get_clean(); </pre>
Может есть какая то функция предназначена для этого?
https://visavi.net/topics/42506/684773
Как получить в переменную изображение? T-SFri, 24 Jul 2015 19:23:09 +0300Сообщенияhttps://visavi.net/topics/42506/684773Допустим есть $img_object = imagecreatefromstring($data);<br>
его нужно обработать и переписать опять же в ПЕРЕМЕННУЮ $data.<br>
Можно ли как то обойтись не сохраняя img_object в файл?<br>
По поводу использования рессурсов и прочее блалабла я вкурсе. Просто не хочу лишний раз винт напрягать
https://visavi.net/topics/42506/684772
Как получить в переменную изображение? T-SFri, 24 Jul 2015 19:04:41 +0300Сообщенияhttps://visavi.net/topics/42506/684772