Преобразовать код GIF в изображение GIF или вывести в файл?

0

Я не совсем уверен, как изложить это так, извиняясь, если заголовок вводит в заблуждение. Я использую веб-службу UPS для создания метки доставки, она возвращается как GIF, но не как изображение, а как длинный код:

R0lGODdheAUgA+cAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09....... (etc)

Мой вопрос: как я могу использовать это, чтобы получить реальный образ GIF? предпочтительно для вывода в файл и с использованием JavaScript или PHP.

Заранее спасибо!

Теги:
gif
ups

2 ответа

1
Лучший ответ

Строка выглядит как данные, закодированные в 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);
  • 0
    Отлично спасибо!
  • 0
    @ user1952067 Добро пожаловать.
0

Код, который выводит этот контент (это двоичный контент изображения GIF), должен объявлять в заголовке на сервер, что это содержимое представляет собой изображение GIF (иначе сервер не знает, как представить этот контент). Таким образом, ваш PHP-код в заголовке должен определять что-то вроде:

header('Content-Type: image/gif');

Посмотрите http://php.net/manual/en/function.imagegif.php

  • 0
    Это много binary значений!
  • 1
    Это не двоичные данные. Это двоичные данные в кодировке base64 . Простая настройка типа контента не будет работать.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню