Intereting Posts
Скрипт JQuery – выбор заливки с текстом ввода и наоборот Почему мой сайт всегда использует ErrorController для всех типов ошибок независимо от кода состояния HTTP? Отправка значения Button в контроллер, но не для публикации значения PHP, Сортировка многомерного массива с помощью дочернего массива Есть ли какая-либо встроенная функция PHP, которая генерирует встроенное исключение? Twilio PHP – сертификат SSL: самоподписанный сертификат в цепочке сертификатов MySql Doctrine: найти, если заданная переменная имеет свойство IN array как реализовать сеанс PHP вручную Подключение к mongodb с использованием драйвера PDO Аутентификация веб-браузера с сертификатом SSL Magento: получить цену продукта от группы клиентов Сделайте строчку в нижнем регистре, куда ее поместить Предварительная загрузка изображений SVG Установка установки Cognosign Halogy cms Вопросы о сфере применения PHP – с точки зрения Java-программиста

Преобразование вывода GD в base64

Ну, мой вопрос очень прост, я просто хочу преобразовать вывод imagepng / imagejpg в base64, как я могу это сделать? Правильно ли это с захватом выходного буфера? Благодарю.

imagejpeg / imagepng не возвращает никаких данных, они записывают данные изображения непосредственно в выходной поток (или в файл).

Если вы хотите захватить эти данные, закодированные как base64, самый простой способ – использовать функции управления выводами PHPs, а затем использовать base64_encode для $image_data .

 ob_start (); imagejpeg ($img); $image_data = ob_get_contents (); ob_end_clean (); $image_data_base64 = base64_encode ($image_data); 

Наиболее распространенным вариантом использования для кодированных изображений base64 является вывод HTML. Я хотел бы предложить более полное решение для этого случая. Я также добавил возможность переключения форматов выходных изображений.

 // Example $gdImg = imagecreate( 100, 100 ); imagecolorallocate( $gdImg, 0, 0, 0 ); echo gdImgToHTML( $gdImg ); imagedestroy( $gdImg ); // Create an HTML Img Tag with Base64 Image Data function gdImgToHTML( $gdImg, $format='jpg' ) { // Validate Format if( in_array( $format, array( 'jpg', 'jpeg', 'png', 'gif' ) ) ) { ob_start(); if( $format == 'jpg' || $format == 'jpeg' ) { imagejpeg( $gdImg ); } elseif( $format == 'png' ) { imagepng( $gdImg ); } elseif( $format == 'gif' ) { imagegif( $gdImg ); } $data = ob_get_contents(); ob_end_clean(); // Check for gd errors / buffer errors if( !empty( $data ) ) { $data = base64_encode( $data ); // Check for base64 errors if ( $data !== false ) { // Success return "<img src='data:image/$format;base64,$data'>"; } } } // Failure return '<img>'; }