Я не совсем уверен, как изложить это так, извиняясь, если заголовок вводит в заблуждение. Я использую веб-службу 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');
binary
значений!