Декодировать base64 из строки вида data:image/jpeg;base64,

157
28 ноября 2017, 23:18

Есть изображение

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2Qt.....

Есть ли какой-нибудь более красивый способ получить mime тип файла(из коробки), а не разбивать строку по частям? Пробую делать так

$fileinfo = new \finfo(FILEINFO_MIME_TYPE);
$fileinfo->buffer(base64_decode('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA....'));

Но он мне возвращает, что mime тип изображения "application/octet-stream".

Answer 1
base64_decode('data:image/jpeg;base64,...

Декодирует полную абракадабру, которая действительно "application/octet-stream". Чтобы вы получили настоящий тип для данных, нужно декодировать сами данные. Например, так:

$decoded = base64_decode(substr($str, strpos($str, ',') + 1));

В качестве оптимизации можно пробовать декодировать только первые сто байт от картинки, но тут могут быть неизвестные подводные камни.

READ ALSO
json_encode, ассоциативные массивы

json_encode, ассоциативные массивы

Здравствуйте, меня интересует следующая задачаЕсть массив, который нужно преобразовать в JSON

207
Условия для выпадающего списка

Условия для выпадающего списка

Имеется выпадающий список:

199
Работа с трёхмерным массивом

Работа с трёхмерным массивом

Как эффективнее создать алгоритм? Задаётся двумерный массив, скажем размером аби эти самые а и б уже никогда не изменятся больше

220
Проверка множеств на равенство

Проверка множеств на равенство

Как правильно проверить множества на равенство?

222