Я не совсем уверен, как это сформулировать, поэтому извиняюсь, если название вводит в заблуждение
Я использую веб-сервис UPS для создания этикетки доставки, она возвращается в виде GIF, но не в виде изображения, а в виде длинного кода:
R0lGODdheAUgA+cAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09....... (etc)
У меня вопрос, как я могу использовать это, чтобы получить фактическое изображение GIF? желательно выводить в файл, используя либо JavaScript, либо PHP.
Заранее спасибо!
Строка выглядит как base64-закодированные данные. Предполагая, что на самом деле это изображение, вы можете декодировать его так:
$encodedGif = 'R0lGODdheAUgA+cAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBw...';
$decodedGif = base64_decode($encodedGif, true);
if ($decodedGif === false) {
die('Data has been corrupted. Unable to decode.');
}
Если у вас есть декодированные данные, вы можете, например, сохранить его в файл:
$file = 'image.gif';
if ( ! file_put_contents($file, $decodedGif)) {
die('Saving image did not work!');
}
Или вы можете вывести его в браузер в виде изображения GIF:
header('Content-Type: image/gif');
die($decodedGif);
Код, который выводит это содержимое (это двоичное содержимое изображения GIF), должен сообщить в заголовке серверу, что это содержимое представляет изображение GIF (в противном случае сервер не знает, как представить это содержимое). Таким образом, ваш PHP-код в выражении заголовка должен определять что-то вроде:
header('Content-Type: image/gif');
смотреть на http://php.net/manual/en/function.imagegif.php