PHP Просмотр изображения из строки Base64 - PullRequest
2 голосов
/ 01 декабря 2011

Я подключаюсь к Active-Directory и успешно получаю атрибут thumbnailPhoto .

Я сохранил файл в БД, используя кодировку Base64, которая делает результат похожим на:

/9j/4AAQSkZJRgABAQEAYABgAAD/4RHoRXhpZgAATU0AKgAAAAgABQEyAAIAAAAUAA ...

(Полная строка в кодировке Base64: http://pastebin.com/zn2wDEmd)

Используя простой декодер Base64 и декодируя строку в двоичный файл и переименовывая ее в jpeg и открывая с помощью средства просмотра изображений (здесь: Irfan View), я получаю правильную картинку - посмотрите сами:

Picture

Как мне добиться этого через PHP - я пытался использовать:

<?php 

$data = '/9j/4A...'; //The entire base64 string - gives an error in dreamweaver

$data = base64_decode($data);

$fileTmp = imagecreatefromstring($data);

$newImage = imagecreatefromjpeg($fileTmp);

if (!$newImage) {
    echo("<img src=".$newImage."/>");
} 

?>

Я просто получаю пустую страницу!

1 Ответ

1 голос
/ 01 декабря 2011

Ваша проблема в том, что imagecreatefromstring() возвращает не файл, а изображение в памяти, которое должно быть выведено с правильными заголовками.

$data = base64_decode($data);

// Create image resource from your data string
$imgdata = imagecreatefromstring($data);

if ($imgdata) {
  // Send JPEG headers
  header("Content-type: image/jpeg");
  // Output the image data
  imagejpeg($imgdata);

  // Clean up the resource
  imagedestroy($imgdata);
  exit();
}
...