Извлечь / преобразовать (многофайловое) изображение, которое преобразовано

У меня есть файл, созданный с помощью программы, создателя наклеек с изображениями. Я знаю, что эта программа сохраняет свои изображения (вероятно, изображение, bg и маску) в один файл с расширением ".adf" .

Я не смог преобразовать выходной файл с изображением магии, причина ошибки ниже:

convert: no decode delegate for this image format `output.adf' @ error/constitute.c/ReadImage/532.

Я не знаю, как этот образ конвертируется с помощью волшебства изображения. это мой список настроек:

Path: [built-in]

Name          Value
-------------------------------------------------------------------------------
NAME          ImageMagick

Path: configure.xml

Name          Value
-------------------------------------------------------------------------------
CC            vs10
COPYRIGHT     Copyright (C) 1999-2011 ImageMagick Studio LLC
DELEGATES     bzlib freetype jpeg jp2 lcms png tiff x11 xml wmf zlib
FEATURES      OpenMP
HOST          Windows
LIB_VERSION   0x671
LIB_VERSION_NUMBER 6,7,1,0
NAME          ImageMagick
RELEASE_DATE  2011-07-15
VERSION       6.7.1
WEBSITE       http:// www.image magick.org

Я прикрепил файл: src.adf

* EDIT *, если я запускаю команду file на src.adf, она говорит:

root@MexHex-PC:# file -vv src.adf
file-5.25
magic file from /etc/magic:/usr/share/misc/magic

Что пропустили? Спасибо

1 ответ

Решение

Это src.adf выглядит как очень минимальный и плоский файл данных. Я ничего не знаю о продуктах Dalahoo3D и / или ArcGis, но мы можем быстро извлечь встроенные изображения с помощью Python.

import struct

with open('src.adf', 'rb') as f:
    # Calculate file size.
    f.seek(0, 2)
    total_bytes = f.tell()
    # Rewind to beging.
    f.seek(0)
    file_cursor = f.tell()
    image_cursor = 0

    while file_cursor < total_bytes:
        # Can for start of JPEG.
        if f.read(1) == b"\xFF":
            if f.read(3) == b"\xD8\xFF\xE0":
                print("JPEG FOUND!")
                # Backup and find the size of the image
                f.seek(-8, 1)
                payload_size = struct.unpack('<I', f.read(4))[0]
                # Write image to disk
                d_filename = 'image{0}.jpeg'.format(image_cursor)
                with open(d_filename, 'wb') as d:
                    d.write(f.read(payload_size))
                image_cursor += 1
            else:
                f.seek(-3, 1)  # Back cursor up, and try again.
        file_cursor = f.tell()

Который сбрасывает следующие три изображения...

image0

image1

image2

Я уверен, что этот файл был сделан с Imagemagick. Я уже видел, что можно конвертировать файл в TIFF изображение. Он сказал мне сделать это с Imagemagick, но не объяснил метод.

Я предполагаю, что это просто вопрос недопонимания. Это правда, что ImageMagick обычно обрабатывает форматы JPEG / TIFF, но не географические информационные системы и / или 3D-моделирование. Обычно это расширяется поставщиком - например, ArcGIS. Могу поспорить, что ImageMagick присутствует в процессе генерации файлов TIFF, но .ADF не будет поддерживаться ImageMagick, пока кто-то не напишет кодер-делегат.

Обновить

Исходя из этого вопроса, похоже, вам нужно расширить делегаты ImageMagick для вызова утилит GDAL. Вам нужно будет обновить файл Delegates.xml, чтобы вызвать правильную утилиту.

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