Привет, я пытаюсь отобразить изображение в наборе processing.js, используя jquery ajax-запрос и код php, но он не показывает изображение, которое я посылаю на скетч, вот мой код JS:
<script type="text/javascript">
function send() {
//var s;
function setPath(imgPath) {
var s = imgPath;
var processingInstance;
processingInstance = Processing.getInstanceById('canvas');
processingInstance.change(s);
}
var variable = 5;
$.ajax({
method: "POST",
tupe: "POST",
url: "take.php",
data: ({val: variable}),
success: function (data) {
setPath(data);
},
});}
</script>
Это мой код обработки:
String pic;
PImage img;
void setup(){
size(200,200);
background(150);
img = loadImage(pic);
}
void draw(){
image(img,50,50,width/2,height/2);
}
void change(String val){
pic = val;
println(pic);
}
И мой код PHP:
<?php
if ($_POST) {
$temp = $_POST['val'];
if ($temp == 5) {
$img = "images.jpg";
echo $img;
}
}
?>
когда я запускаю код и печатаю результат в эскизе, я получаю результат «images.jpg», но на холсте ничего не отображается, кто-то знает, что делать ??
Имейте в виду, что setup()
Функция вызывается только один раз, в начале эскиза.
Ваш pic
переменная начинается без значения, и это то, что вы передаете в loadImage()
функция. Вы сохраняете возвращенное значение (которое, вероятно, будет разбитым изображением) в ваш img
переменная.
Тогда в change()
функция, вы обновляете pic
переменная, но вы не обновляете img
переменная. Просто потому, что вы меняете pic
переменная не означает, что изображение магически перезагружается для вас. Вы должны специально сделать это самостоятельно.
Это может выглядеть примерно так:
void change(String val){
pic = val;
img = loadImage(pic);
}
На самом деле вы могли бы избавиться от pic
переменная полностью.
Обратите внимание, что для этого также требуется файл изображения, расположенный по указанному пути.
Других решений пока нет …