Как декодировать встроенные изображения base64 fbx

У меня есть FBX со встроенным изображением. Изображение в Base64. Я прочитал фрагмент и успешно его расшифровал. Проблема возникает, когда изображение больше. FBX разбивает изображение на 2 строки, что похоже на base64, но я не понимаю, как его декодировать.

  1. Я попытался декодировать обе строки в base64 и соединить их перед распаковкой png, но png поврежден.
  2. Я попытался объединить строки Base64, но это не сработало, так как окончание = след неверно.
  3. Я попытался сначала распаковать первую строку (правильный png, но только половину изображения) и распаковать вторую как растровое изображение, но, поскольку у второго нет заголовков, это недопустимое изображение.

Content: , "iVBORw0KGgoAAAANSUhEUg...AAAAA = ", "AAAAAAAAAAAAAAAAAA...AD//wEAAP///noceab5flIAAAAASUVORK5CYII = "

Как видите, первая строка представляет собой заголовок PNG (iVBOR...), а вторая строка не имеет заголовка. Первая и вторая строки имеют окончание base64, поэтому я подозреваю, что их следует декодировать отдельно.

Кто-нибудь знает, как?

Как воспроизвести: откройте 3ds max, создайте плоскость, примените изображение как текстуру, сохраните как ascii FBX с встраиванием носителя.

Как декодировать встроенные изображения base64 fbx

Не могли бы вы привести пример такого изображения PNG

SergeyLebedev 11.05.2019 12:06

ок, отредактирую..

diego.martinez 13.05.2019 10:04
Применение градиента к изображению с помощью CSS
Применение градиента к изображению с помощью CSS
Здравствуйте, братья и сестры, как дела? Недавно я застрял на применении градиента к изображению. Я применял это много раз, но иногда наши требования...
Получение URL-адреса изображения курса в Moodle с помощью PHP
Получение URL-адреса изображения курса в Moodle с помощью PHP
Moodle - это популярная система управления обучением с открытым исходным кодом, используемая многими учебными заведениями и организациями по всему...
3
2
356
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я скачал и установил последнюю версию 3ds max. Я создал самолет и добавил изображение PNG в качестве текстуры, я экспортировал его в виде файла fbx в формате ascii (версия по умолчанию) с использованием встроенного носителя.

Я видел несколько строк ascii в кодировке base64. Первая строка содержала заголовок PNG, и мой декодер распознал его как файл PNG. Последующие строки не содержали заголовков PNG и декодировались как файлы BIN. Все именно так, как вы описываете.

Однако в моем случае простое объединение декодированных сегментов правильно восстановило исходный файл PNG, как и следовало ожидать.

Я использовал сайт это для декодирования всех отдельных фрагментов и загрузки их в виде двоичных файлов перед их объединением.

Я использовал двоичный редактор с открытым исходным кодом ШестнадцатеричныйПравить, чтобы изучить фрагменты и объединить их.

Поскольку этот процесс работал, как и ожидалось, я предполагаю, что ваше декодирование или конкатенация Base64 должны быть неисправны. Вы написали свою собственную процедуру декодирования? если это так, возможно, вы забыли отбросить любые байты, соответствующие символам заполнения (терминал = или ==, используемый для того, чтобы окончательное количество байтов делилось на три без остатка для каждой строки). Обратите внимание, что эти байты должны быть отброшены после декодирования, а не до. Практически все библиотеки декодирования делают это незаметно для вас.

Если это не решит вашу проблему, опубликуйте файл PNG, который вы используете, полную версию Base64 для первой и второй строк вывода и процедуру, которую вы используете для их декодирования и объединения. Если вы это сделаете, мы рассмотрим более внимательно, чтобы помочь вам разобраться в проблеме.

Привет! Ваша помощь была полезна, чтобы узнать, что моя процедура декодирования base64 на самом деле теряла последний байт из-за ошибки в заполнении. Затем, после конкатенации, он был поврежден. Я изменил свою процедуру на ту, что здесь stackoverflow.com/questions/180947/base64-decode-snippet-in-‌​c, и все заработало как часы. Спасибо большое.

diego.martinez 15.05.2019 12:02

Другие вопросы по теме