You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP修改GLTF文件中images数组首个元素的URI并保存

PHP修改GLTF文件中指定纹理URI的方法

你的原有代码问题在于直接遍历了GLTF JSON的顶级节点(比如scenes、nodes、images这些),而目标元素实际在images子数组里,所以无法正确匹配到目标URI。以下是两种可行的修改方式:

方式一:通过数组索引直接修改(已知目标是第一个元素)

如果确定要修改的是images数组的第一个元素,直接通过索引定位最直接:

$jsonString = file_get_contents('jsonFile.gltf');
$data = json_decode($jsonString, true);

// 定位到images数组的第一个元素(索引为0)并修改uri
if (isset($data['images'][0])) {
    $data['images'][0]['uri'] = "textures/Another_baseColor.jpeg";
}

$newJsonString = json_encode($data, JSON_PRETTY_PRINT); // 保持JSON格式可读性
file_put_contents('jsonFile.gltf', $newJsonString);
echo "bitti";

方式二:遍历images数组匹配URI修改(不确定索引时使用)

如果不确定目标元素的索引,只知道要修改的URI值,可以遍历images数组查找匹配项:

$jsonString = file_get_contents('jsonFile.gltf');
$data = json_decode($jsonString, true);

// 遍历images数组查找目标URI
foreach ($data['images'] as $key => $image) {
    if ($image['uri'] === 'textures/CARA_A_baseColor.jpeg') {
        $data['images'][$key]['uri'] = "textures/Another_baseColor.jpeg";
        break; // 找到目标后跳出循环,提升效率
    }
}

$newJsonString = json_encode($data, JSON_PRETTY_PRINT);
file_put_contents('jsonFile.gltf', $newJsonString);
echo "bitti";

注意事项

  • 使用JSON_PRETTY_PRINT参数可以让生成的JSON保持缩进格式,避免原GLTF文件被压缩成一行,方便后续查看和编辑。
  • 操作前建议备份原GLTF文件,防止修改出错导致文件损坏。

内容的提问来源于stack exchange,提问作者Anda İnteraktif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:25:26