Intereting Posts
Как получить доступ к элементу массива в многомерном массиве? альтернатива filemtime для MySQL Только показать кнопку для входа в систему в Laravel PHP не обрабатывает переполнение стека? Yii2 – Получение неизвестного свойства: yii \ console \ Application :: user Не удается подключиться к локальному размещенному mysql, используя скрипт PHP jQuery html () и & amp; Mysqli_error () не работает Обновление старых сохраненных паролей md5 в PHP для повышения безопасности Переменная количество столбцов, возвращаемых в подготовленном операторе mysqli yii2 – функция загрузки модели не устанавливает некоторые атрибуты модели Как создавать и использовать nonces date (), «Неверное сформированное числовое значение столкнулось» не хочет форматировать дату, прошедшую в $ _POST Проверка продуктов в корзине по названию категории woocommerce? Как предотвратить ошибку «недействительный файл изображения» при использовании функции GD imagecreatefrom * in php?

Проблемы с imagecreatefromstring со строкой, переданной из javascript

У меня возникают проблемы с отправкой изображения в виде строки между Javascript и PHP. Пока у меня есть:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cIL 

как строка, которая передается от JS к PHP, и это проверяется по мере того, как изображение будет загружаться в хром «как есть».

Я использую PHP для

 $im = imagecreatefromstring($data); 

Это, однако, просто ошибки. Если я удалю данные: image / png; бит base64, он работает, но когда дело доходит до больших файлов, это просто не работает.

Мне просто интересно, что я мог пропустить здесь.

Вам нужно удалить заголовок, который выплевывается из canvas.toDataURL («image / png; base64»);

вы можете сделать это с помощью javascript:

 var imgData= canvas.toDataURL("image/png;base64"); var postData = {drawing:imgData.substr(22)}; 

или с php

 substr($_POST['drawing'],22); 

У меня такая же ошибка, но если я попробую:

 echo '<img src="'.$data.'"/>'; 

Затем изображение отображается …

В оболочку это не работает:

 echo 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cI' | base64 -d - >file.png 

Я получил base64: недопустимая запись .

Если я добавлю «=»:

 echo 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cIL=' | base64 -d - >file.png 

Тогда это хорошо. Но также плохо с imagecreatefromstring ().

Не могли бы вы рассказать нам, как вы получили кодированный base64 контент в javascript?

См. Этот комментарий: http://www.php.net/manual/en/function.base64-decode.php#102113

Изменить : этот код работает …

 <?php $data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cIL'; $data = base64_decode($data); header('Content-Type: image/png'); echo $data; ?>