.tmx(タイル)ファイルからレイヤーコンテンツを抽出する際に問題が発生します。PHPで完全な非圧縮データを取得し、そのイメージを少し作成したいと思います。幅、高さなどのヘッダー情報を取得することは問題ありません-SimpleXMLはそこでその仕事をしています。しかし、どういうわけかタイルレイヤーの解凍が機能していません。
データ自体はbase64およびgzipでエンコードされた文字列(sth like H4sIAAAAAAAAC+3bORKAIBQEUVzuf2YTTSwEA/gL00EnJvJQsAjcSyk7EU3v+Jn3OI
)として保存されますが、base64でデコードされたコードを取得することさえ問題があります(奇妙な文字が表示され、マップをタイルで開いて「base64uncompressed」として保存すると結果は単なる空の文字列でした-もちろんgzip解凍を使用していません)。
私はすでにWebを検索し、データがどのように正確に圧縮されているかを確認しました(Githubの記事)。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の記事)。今、私は本当に混乱しました。私は何を選ぶべきかわかりません-私はもう一度グーグルに尋ねて、次のものを得ました:Javaで圧縮するPHPで解凍する。答えによると、base64メソッドとgzipメソッドを使用する前にヘッダーをトリミングする必要があります。
今私の質問:前にヘッダーを切り抜く必要がありますか?はいの場合、どうすればよいですか?そうでない場合、どうすれば非圧縮データを取得できますか?
誰かがここで私を助けてくれることを本当に望んでいます!