【发布时间】:2012-05-16 07:36:56
【问题描述】:
我在从 .tmx(平铺)文件中提取图层内容时遇到问题。 我想在 PHP 中获取完整的 未压缩 数据并制作一个小图像。 获取宽度、高度等标题信息是没有问题的——SimpleXML 在那里完成了它的工作。但不知何故,瓦片层的解压缩不起作用。
数据本身存储为 base64 和 gzip 编码字符串(如H4sIAAAAAAAAC+3bORKAIBQEUVzuf2YTTSwEA/gL00EnJvJQsAjcSyk7EU3v+Jn3OI),但我什至在获取 base64 解码代码时遇到问题(它只是给了我奇怪的字符,当我重新打开平铺并保存的地图时它作为“base64 uncompressed”结果只是一个空字符串 - not 当然使用 gzip 解压缩)。
我已经通过网络搜索并查看了数据是如何精确压缩的 (Github article)。似乎我必须使用 gzinflate() 命令而不是所有其他命令(例如 gzuncompress),但这对我也不起作用。
我现在的代码如下:
<?php
// Get the raw xml data
$map_xml = new SimpleXML(file_get_contents("map.tmx"));
$data = $map_xml["layer"][0]["data"]["@content"]; // I would make a loop here
$content =gzinflate(base64_decode($map_content)); // gives me and error
var_dump($data); // results in nothing
?>
经过更多研究后,我发现我应该使用 zlib 过滤器 (php.net article)。 现在我真的很困惑我不知道我应该选择什么 - 我再次询问谷歌并得到以下信息:Compressing with Java Decompressing with PHP。根据答案,我必须在使用 base64 和 gzip 方法之前裁剪我们的标题。
现在我的问题是:我必须先剪掉标题吗?如果是,我该怎么做? 如果没有,那我怎样才能得到未压缩的数据呢?
我真的希望有人可以在这里帮助我!
【问题讨论】:
-
您能否添加完整的
.tmx文件...以获取您正在处理的文件的完整详细信息