Что не так с функцией imagecreatefromstring?

Что не так с этим кодом?

<?php
$data = "iVBORw0KGgoAAAANSUhEUgAAAuwAAAUeCAYAAAAl3WRgAAAgAElEQVR4Xuzdz6/vCV3f8TPADIozowg1ETZ2U2Chm6oLuqkdE1clSlzVdEhXLuAPKPwB1X110ZWBpqyMGLoiAe3KRa2bshDclE0xqSDlp4woej5nPJczd+bOmTmv+2Q+d+ZxEkPC3Pfrfs/je0ye8+V7v/exn/rNL/zDhS8CBAgQIECAAAECBE4p8JhgP+Xz4kERIECAAAECBAgQuBIQ7H4QCBAgQIAAAQIECJxYQLCf+Mnx0AgQIECAAAECBAgIdj8DBAgQIECAAAECBE4sINhP/OR4aAQIECBAgAABAgQEu58BAgQIECBAgAABAicWEOwnfnI8NAIECBAgQIAAAQKC3c8AAQIECBAgQIAAgRMLCPYTPzkeGgECBAgQIECAAAHB7meAAAECBAgQIECAwIkFBPuJnxwPjQABAgQIECBAgIBg9zNAgAABAgQIECBA4MQCgv3ET46HRoAAAQIECBAgQECw+xkgQIAAAQIECBAgcGIBwX7iJ8dDI0CAAAECBAgQICDY/QwQIECAAAECBAgQOLGAYD/xk+OhESBAgAABAgQIEBDsfgYIECBAgAABAgQInFhAsJ/4yfHQCBAgQIAAAQIECAh2PwMECBAgQIAAAQIETiwg2E/85HhoBAgQIECAAAECBAS7nwECBAgQIECAAAECJxYQ7Cd+cjw0AgQIECBAgAABAoLdzwABAgQIECBAgACBEwsI9hM/OR4aAQIECBAgQIAAAcHuZ4AAAQIECBAgQIDAiQUE+4mfHA+NAAECBAgQIECAgGD3M0CAAAECBAgQIEDgxAKC/cRPjodGgAABAgQIECBAQLD7GSBAgAABAgQIECBwYgHBfuInx0MjQIAAAQIECBAgINj9DBAgQIAAAQIECBA4sYBgP/GT46ERIECAAAECBAgQEOx+BggQIECAAAECBAicWECwn/jJ8dAIECBAgAABAgQICHY/AwQIECBAgAABAgROLCDYT/zkeGgECBAgQIAAAQIEBLufAQIECBAgQIAAAQInFhDsJ35yPDQCBAgQIECAAAECgt3PAAECBAgQIECAAIETCwj2Ez85HhoBAgQIECBAgAABwe5ngAABAgQIECBAgMCJBQT7iZ8cD40AAQIECBAgQICAYPczQIAAAQIECBAgQODEAoL9xE+Oh0aAAAECBAgQIEBAsPsZIECAAAECBAgQIHBiAcF+4ifHQyNAgAABAgQIECAg2P0MECBAgAABAgQIEDixgGA/8ZPjoREgQIAAAQIECBAQ7H4GCBAgQIAAAQIECJxYQLCf+Mnx0AgQIECAAAECBAgIdj8DBAgQIECAAAECBE4sINhP/OR4aAQIECBAgAABAgQEu58BAgQIECBAgAABAicWEOwnfnI8NAIECBAgQIAAAQKC3c8AAQIECBAgQIAAgRMLCPYTPzkeGgECBAgQIECAAAHB7meAAAECBAg...gQIECAAAECVwHBfuV1ToAAAQIECBAgQKAJCPbmZ02AAAECBAgQIEDgKiDYr7zOCRAgQIAAAQIECDQBwd78rAkQIECAAAECBAhcBQT7ldc5AQIECBAgQIAAgSYg2JufNQECBAgQIECAAIGrgGC/8jonQIAAAQIECBAg0AQEe/OzJkCAAAECBAgQIHAVEOxXXucECBAgQIAAAQIEmoBgb37WBAgQIECAAAECBK4Cgv3K65wAAQIECBAgQIBAExDszc+aAAECBAgQIECAwFVAsF95nRMgQIAAAQIECBBoAoK9+VkTIECAAAECBAgQuAoI9iuvcwIECBAgQIAAAQJNQLA3P2sCBAgQIECAAAECVwHBfuV1ToAAAQIECBAgQKAJCPbmZ02AAAECBAgQIEDgKiDYr7zOCRAgQIAAAQIECDQBwd78rAkQIECAAAECBAhcBQT7ldc5AQIECBAgQIAAgSYg2JufNQECBAgQIECAAIGrgGC/8jonQIAAAQIECBAg0AQEe/OzJkCAAAECBAgQIHAVEOxXXucECBAgQIAAAQIEmoBgb37WBAgQIECAAAECBK4Cgv3K65wAAQIECBAgQIBAExDszc+aAAECBAgQIECAwFVAsF95nRMgQIAAAQIECBBoAoK9+VkTIECAAAECBAgQuAoI9iuvcwIECBAgQIAAAQJNQLA3P2sCBAgQIECAAAECVwHBfuV1ToAAAQIECBAgQKAJCPbmZ02AAAECBAgQIEDgKiDYr7zOCRAgQIAAAQIECDQBwd78rAkQIECAAAECBAhcBQT7ldc5AQIECBAgQIAAgSYg2JufNQECBAgQIECAAIGrgGC/8jonQIAAAQIECBAg0AQEe/OzJkCAAAECBAgQIHAVEOxXXucECBAgQIAAAQIEmoBgb37WBAgQIECAAAECBK4Cgv3K65wAAQIECBAgQIBAExDszc+aAAECBAgQIECAwFVAsF95nRMgQIAAAQIECBBoAoK9+VkTIECAAAECBAgQuAoI9iuvcwIECBAgQIAAAQJNQLA3P2sCBAgQIECAAAECVwHBfuV1ToAAAQIECBAgQKAJCPbmZ02AAAECBAgQIEDgKiDYr7zOCRAgQIAAAQIECDQBwd78rAkQIECAAAECBAhcBQT7ldc5AQIECBAgQIAAgSYg2JufNQECBAgQIECAAIGrgGC/8jonQIAAAQIECBAg0AQEe/OzJkCAAAECBAgQIHAVEOxXXucECBAgQIAAAQIEmoBgb37WBAgQIECAAAECBK4Cgv3K65wAAQIECBAgQIBAExDszc+aAAECBAgQIECAwFVAsF95nRMgQIAAAQIECBBoAoK9+VkTIECAAAECBAgQuAoI9iuvcwIECBAgQIAAAQJNQLA3P2sCBAgQIECAAAECVwHBfuV1ToAAAQIECBAgQKAJCPbmZ02AAAECBAgQIEDgKiDYr7zOCRAgQIAAAQIECDSBAaWRPdih0+LkAAAAAElFTkSuQmCC";    
$data = base64_decode($data);

$im = imagecreatefromstring($data);
if ($im !== false) {
    header('Content-Type: image/png');
    imagepng($im);
    imagedestroy($im);
}
else {
    echo 'An error occurred.';
}
?>

Я получаю такие ошибки:

  • Предупреждение: imagecreatefromstring (): gd-png: фатальная ошибка libpng: ошибка чтения: усеченные данные в D: \ wamp \ www \ img \ index.php в строке 5

  • Предупреждение: imagecreatefromstring (): ошибка gd-png: setjmp возвращает состояние ошибки в D: \ wamp \ www \ img \ index.php в строке 5

  • Предупреждение: imagecreatefromstring (): переданные данные не в формате PNG в D: \ wamp \ www \ img \ index.php в строке 5

  • Предупреждение: imagecreatefromstring (): не удалось создать поток изображений GD из данных в D: \ wamp \ www \ img \ index.php в строке 5

Произошла ошибка.

Кто-нибудь может мне помочь, пожалуйста!

Спасибо.


person ptCoder    schedule 22.05.2013    source источник
comment
Я предполагаю, что предоставленная вами base64 не является полной.   -  person webmaster777    schedule 23.05.2013


Ответы (3)


В середине изображения в кодировке base64 есть ....

AAAECBAg...gQIECAAA

person Mr. Llama    schedule 22.05.2013

base64 данные not valid, complete или содержат недопустимые characters ... Вот быстрая проверка

var_dump($data === base64_encode(base64_decode($data)));

Возврат

bool(false)
person Baba    schedule 22.05.2013

$ image = imagecreatefromstring (file_get_contents ('your_image_path_here'));

Пример: $image = imagecreatefromstring(file_get_contents('sample.jpg'));

person Edwin Thomas    schedule 05.10.2015