【问题标题】:Can't get images to display properly in KMZ using zipentry in Java/Groovy无法使用 Java/Groovy 中的 zipentry 在 KMZ 中正确显示图像
【发布时间】:2021-08-09 18:02:41
【问题描述】:

基本上,我一直在尝试让图像显示在 KMZ 文件的属性下。我当前的设置创建了一个具有以下结构的解压缩目录:

主文件夹/ 文档.kml 文件/ img1.jpeg img2.jpeg img3.jpeg ... 然后我使用以下代码将所有内容压缩到 KMZ 中

    void zipFile(File directory, File file, ZipOutputStream zip) {
        if (!file.isDirectory()){
            def input = new FileInputStream(file)
            String name = file.getPath()
            name = name.replace(kmzDir.path+"\\", "")
            zip.putNextEntry(new ZipEntry(name))
            IOUtils.copy(input, zip)
            zip.closeEntry()
        }

    }

    void zipKMZDirectory() {

        BufferedOutputStream fileWriter = new BufferedOutputStream(new FileOutputStream(new File(kmzDir.path + ".kmz")))
        ZipOutputStream zip = new ZipOutputStream(fileWriter)
        resourceDir.listFiles().each { file ->
            zipFile(resourceDir, file, zip)
        }
        kmzDir.listFiles().each { file ->
            zipFile(kmzDir, file, zip)
        }
        zip.close()
        fileWriter.close()
    }

在 KMZ 之外打开 doc.kml 文件效果很好(在 google earth 中加载图像),但打开 KMZ 文件并尝试查看任何图像只会显示一个蓝色问号代替图像。

当它尝试加载图像(右键单击 -> 检查 -> 网络)时,我尝试查看网络数据,它说它成功地在主文件夹/文件/image.jpeg 下找到了图像。此外,我尝试删除存储在 kmz 存档中的所有图像,然后通过 7zip 手动将所有图像添加回 zip 中,确实显示图像。这告诉我在 zip 压缩阶段(?)出现了问题,不允许谷歌打开图像(尽管我只是尝试自己查看图像并且它们没有损坏或任何东西)。

编辑:我在桌面上使用 Google 地球专业版

【问题讨论】:

    标签: java groovy kml google-earth kmz


    【解决方案1】:

    我不确定到底是什么问题,我假设它是在我制作 zip 文件的方式中损坏了某些东西。我想了一条不同的路线来修复它,而不是制作目录然后压缩它,我基本上只是在制作文件时压缩它们(以下:https://stackoverflow.com/a/12762850/5304918 作为大纲)

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多