Обработка изображений в кодировке base64 с помощью json_encode и PHP - PullRequest
2 голосов
/ 23 ноября 2011

Мой класс PHP возвращает маленькое изображение в кодировке base64, ссылка на него:

class Service
{

  function getLogo()
  {
    $image = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c
             QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwA";

    return 'data:image/png;base64,' . $image;
  }

}

При возврате изображения с помощью json_encode добавится \n после каждой строки $image:

$service = new Service();
$response = array('name' => $service->getName(), 'logo' => $service->getLogo());
header('Content-type: application/json');
echo json_encode($response);

Как правильно с этим обращаться?

Ответы [ 2 ]

5 голосов
/ 23 ноября 2011

Вы исказили данные base64, разделив их на две строки.это должно быть

function getLogo() {
    $image = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4cQAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwA";

    return 'data:image/png;base64,' . $image;
}

без разрывов строки.

2 голосов
/ 30 мая 2012

Ответ дает Марк Б. Это всего лишь комментарий. Если форматирование кода действительно , что важно для вас, так как вы не можете допустить длинных строк ( почему? ), вы всегда можете отформатировать PHP таким образом:

class Service
{

  function getLogo()
  {
    $image  = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c';
    $image .= 'QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwA';

    return 'data:image/png;base64,' . $image;
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...