Intereting Posts
memory_get_peak_usage () с "реальным использованием" 500 ошибок разработки приложения Heroku PHP Facebook локально Обновление проблемы с jira с остальными api. НЕ мыло Строгие стандарты: только переменные должны передаваться по ссылке в wordpress / wp-includes / class-oembed.php в строке 116 Электронная почта Php, отправленная с вопросами по темам в Outlook только Html File Save – Как преодолеть ограничение 2K для GET. (Примечание: POST не работает) Настройка пользовательских параметров при добавлении продукта в корзину через SOAP в Magento Поиск PHP ключа в многомерном массиве Ошибка толерантного анализа HTML / XML / SGML в PHP Как включить расширение php с помощью `phpize`? Получите сумму столбца MySQL в PHP как отправить значение div в форме Как запустить Apache Tomcat и Apache2 на Ubuntu Параллельно друг с другом? Тип намека на PHP 7 – массив объектов Как добавить фильтр электронной почты в учетную запись электронной почты IMAP?

Ajax и возвращаемое изображение, созданное PHP GD

У меня есть PHP-скрипт, который генерирует изображение с помощью PHP GD. После того, как он генерирует изображение, он сохраняет его и отправляет этот результат при вызове Ajax:

imagejpeg($img_data, 'filename.jpg'); echo '<img src="/filename.jpg.jpg">'; 

И после этого изображение отображается на странице, и все в порядке. Но я не хочу создавать изображение каждый раз. Есть ли способ вернуть Ajax только строку $raw_data и показать изображение? Я пробовал вот так:

 echo $img_data; 

Но не удача, только то, что возвращается, – это несколько?.

Вот мой код jQuery Ajax:

 $.ajax({ type: 'POST', data: { action: 'update_image', //some instructions for creating the image }, url: 'script.php', success: function(msg) { $('#somediv').append(msg); } }); 

base64 закодирует изображение и вернет его, затем вы можете сделать <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA......." />

На стороне PHP

 $image = base64_encode($imageGDRender); echo json_encode(array('image'=>$image)); 

Это вернет ваш json обратно в ваш jquery

затем на стороне ajax

 $.ajax({ ... success: function(data) { var base64Image = data.image; ...now put it in your image $('#image').attr('src','data:image...'+base64Image); }).... 

Вот решение:

PHP-код:

 ob_start(); imagejpeg($im); $outputBuffer = ob_get_clean(); $base64 = base64_encode($outputBuffer); echo '<img src="data:image/jpeg;base64,'.$base64.'" />'; 

На стороне пользователя (в JQuery):

 success: function(data) { $('#somediv').append(data); } 

Вы должны изменить заголовок перед выполнением echo $img_data;

 header("Content-Type: image/jpeg"); header("Content-Length: " .sizeof($img_data));