Декодирование строки base64 дает изображение черного прямоугольника

Я пытаюсь получить изображение с холста и сохранить его с помощью моего PHP-скрипта. Но когда сценарий продолжается, я получил простой черный прямоугольник вместо изображения холста (снимок веб-камеры).
Вот мой код:

$img = $base64Img;
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = "photo/" . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';

0

Решение

Какова цель этой линии:

$img = str_replace(' ', '+', $img);

Не думай, что это необходимо.
В остальном все вроде нормально.

Я обычно использую php explode выделить данные:

$exploded = explode(',', $img);
$base64 = $exploded[1];
$data = base64_decode($base64);

Но str_replace должен также делать работу.

Может быть, ошибка в коде, который загружает изображение?

ОБНОВИТЬ

Цель этой строки — кодировать пробел в данных base64.
Это также упоминается в этот комментарий на php.net.
Вероятно, было бы лучше использовать функцию PHP urlencode в таких случаях.

$data = base64_decode($data);

Эта строка, вероятно, вызывает проблемы в этом, так как данные не используются в качестве URL-адреса данных, но сохраняются непосредственно в файл.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector