无法在 Java/Groovy 中使用 zipentry 在 KMZ 中正确显示图像
Can't get images to display properly in KMZ using zipentry in Java/Groovy
基本上,我一直在尝试让图像显示在 KMZ 文件的属性下。我当前的设置创建了一个具有以下结构的解压缩目录:
主文件夹/
doc.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 文件并尝试查看任何图像只会显示一个蓝色问题标记代替图像。
我尝试在它尝试加载图像时查看网络数据(右键单击 -> 检查 -> 网络),它说它成功地在 Main Folder/files/image.jpeg 下找到了图像。此外,我尝试删除存储在 kmz 存档中的所有图像,并通过 显示图像的 7zip 手动将所有图像添加回 zip。这告诉我在 zip 压缩阶段 (?) 出现了问题,不允许 google 打开图像(尽管我只是尝试自己查看图像并且它们没有损坏或其他任何东西)。
编辑:我在桌面上使用 Google 地球专业版
我不确定最后是什么问题,我假设是我制作 zip 文件的方式损坏了某些东西。我采取了不同的方法来修复它,我没有制作目录然后压缩它,我基本上只是在制作文件时压缩文件(如下: 作为大纲)
基本上,我一直在尝试让图像显示在 KMZ 文件的属性下。我当前的设置创建了一个具有以下结构的解压缩目录:
主文件夹/ doc.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 文件并尝试查看任何图像只会显示一个蓝色问题标记代替图像。
我尝试在它尝试加载图像时查看网络数据(右键单击 -> 检查 -> 网络),它说它成功地在 Main Folder/files/image.jpeg 下找到了图像。此外,我尝试删除存储在 kmz 存档中的所有图像,并通过 显示图像的 7zip 手动将所有图像添加回 zip。这告诉我在 zip 压缩阶段 (?) 出现了问题,不允许 google 打开图像(尽管我只是尝试自己查看图像并且它们没有损坏或其他任何东西)。
编辑:我在桌面上使用 Google 地球专业版
我不确定最后是什么问题,我假设是我制作 zip 文件的方式损坏了某些东西。我采取了不同的方法来修复它,我没有制作目录然后压缩它,我基本上只是在制作文件时压缩文件(如下: 作为大纲)