在联机编辑器之外使用p5js时无法加载图像



我正在使用p5js,并试图在我的目录中加载和显示一些图像。我正在尝试在预加载函数中使用loadImage()方法来加载图像。然而,当我运行程序时,我会得到这些错误

Fetch API cannot load file:///Users/mainuser/Documents/school/Senior/FinalProject/imgs/arms_up.png. URL scheme "file" is not supported.
🌸 p5.js says: It looks like there was a problem loading your image. Try checking if the file path (imgs/arms_up.png) is correct, hosting the file online, or running a local server. (More info at https://github.com/processing/p5.js/wiki/Local-server)
TypeError: Failed to fetch
at fetch (p5.js:28096)
at p5._main.default.loadImage (p5.js:80673)
at p5.js:62949
at preload (script.js:118)
at p5._start (p5.js:62905)
at new p5 (p5.js:63261)
at _globalInit (p5.js:62189)

我的imgs文件夹与index.html在同一文件夹中

我的猜测是fetch()可能需要一个实际的URL,而不是文件路径。

还有人遇到这个问题吗?我在下面附上了我的代码(我去掉了不相关的代码(。非常感谢。

index.html

<!DOCTYPE HTML>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.3.1/dist/tf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@teachablemachine/pose@0.8/dist/teachablemachine-pose.min.js"></script>
<script src="script.js"></script>
<script src="https://cdn.jsdelivr.net/npm/p5@1.4.0/lib/p5.js"></script>
<link rel="stylesheet" href="styles.css">
</head>

<body>
<h1>Pose Game</h1>
<button type="button" onclick="init()">Start Game!</button>
<button type="button" onclick="restart_game()">Restart Game</button>
<div id="main-div">
<div id="flex-div">
<div id="webcam-div">
<canvas id="canvas"></canvas>
</div>
<div id="p5-div"></div>
</div>
</div>
</body>

</html>

script.js

let arms_up_png;
let left_arm_up;
let right_arm_up;
function preload() {
arms_up_png = loadImage("imgs/arms_up.png");
}

function setup() {
var canvas = createCanvas(400, 400);
canvas.parent('p5-div');
}
function draw() {
background('green');
image(arms_up_png, 50, 50, 20, 20);
}

fetch()将不使用本地文件路径,这是正确的,并且因为p5js需要加载图像文件的内容才能显示它,所以您也不能将本地文件路径与p5jsloadImage()函数一起使用。为了在本地运行草图,您需要使用本地web服务器。Visual Studio Code Live Server扩展非常方便。

最新更新