微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要上传用户的图片输入 - P5 JavaScript 库

如何解决需要上传用户的图片输入 - P5 JavaScript 库

我有一个用P5.js编写的Sketch in Processing,但我不知道如何实现用户的输入。 该程序需要获取 .jpg 图像并且正在处理它。 我对用户输入实现的每次尝试都以空白屏幕或无休止的“正在加载...”屏幕结束。 下面是预加载图像的示例(我需要用户来做)。

let img;
let size;
let pixels = [];

function preload(){
  img=loadImage('image.jpg');  
}

function setup() {
  img.resize(windowHeight,0);
  size = img.height/2;
  createCanvas(img.width,img.height);
  background(0);
  makePixels();
  drawPortrait();
}
function makePixels(){
    for(let y=0; y<height; y+=size){
      for(let x=0; x<width; x+=size){
        let c = img.get(x,y);
        tint(c);
        pixels.push ( new Pixel (x,y,size,c) );
      }
    }
}

function drawPortrait(){
  for(let p of pixels){
    p.show();
  }
}

function drawLastFour(){
  for(let i = pixels.length-4; i<pixels.length; i++){
    pixels[i].show();
  }
}

function mouseMoved(){
  for(let i = 0; i<pixels.length; i++){
      if( (mouseX > pixels[i].x) && (mouseX <= pixels[i].x+pixels[i].s) && (mouseY > pixels[i].y) && (mouseY <= pixels[i].y+pixels[i].s) ){
        for(let py = pixels[i].y; py<pixels[i].y+pixels[i].s; py+=pixels[i].s/2){
          for(let px = pixels[i].x; px<pixels[i].x+pixels[i].s; px+=pixels[i].s/2){
            let c = img.get(px,py);
            pixels.push( new Pixel(px,py,pixels[i].s/2,c) );
          }
        }
        pixels.splice(i,1);
        break;
      }
    }
  drawLastFour();
}

解决方法

您可以使用 createFileInput 函数创建文件类型的输入元素。然后您的用户可以选择一个图像文件,您的草图可以使用该文件。这是(稍作修改的)示例代码,展示了如何使用它:

    let inputElement;
    let userImage;

    function setup() {
        inputElement = createFileInput(handleFile);
        inputElement.position(0,0);
    }

    function draw() {
        background(255);

        if (userImage != null) {
            image(userImage,width,height);
        }
    }

    function handleFile(file) {
        print(file);

        if (file.type === 'image') {
            userImage = createImg(file.data,'');
            userImage.hide();
        } else {
            userImage = null;
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。