提取/转换已转换的(多文件)图像

时间:2018-08-17 13:37:05

标签: imagemagick

我有一个用程序制作的文件,即图像贴纸制造商。 我知道此程序会将其图像(可能是图像,背景和蒙版)保存到扩展名为“ .adf”的单个文件中。

我无法使用以下错误的图像魔术来转换输出文件:

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

我不知道此Image如何通过Image magick转换。 这是我的-list配置结果:

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

*编辑* 如果我在src.adf上运行文件命令,它会告诉您:

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

错过了什么! 谢谢

1 个答案:

答案 0 :(得分:3)

这个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)进行扩展。我敢打赌,生成TIFF文件的工作流中存在ImageMagick,但是someone writes a delegate coder之前ImageMagick不会支持.ADF

更新

this question中,您似乎需要扩展ImageMagick委托才能调用GDAL实用程序。您需要更新delegates.xml文件以调用correct utility