正在处理 - 根据 jpg 尺寸调整大小 canvas

Processing - Resize canvas based on jpg dimensions

我有一个基本程序,其中库存图像构成了更大程序的背景 - 但许多图像彼此之间的尺寸略有不同。

我的初始代码加载背景图像并尝试根据图像尺寸设置 canvas 大小:

    PImage bg;
    void setup() {
    bg = loadImage("102.jpg");
    println(bg.width);
    println(bg.height);
    wWidth = bg.width;
    wHeight = bg.height;
    size(wWidth,wHeight);
    }
    void draw() {
      background(bg);
    }

我收到 'IllegalStateException' 错误 bg.width 和 bg.height 是 806 和 1229,当我分别包含 806 和 1229 而不是 wWidth 和 wHeight 时,我得到了我想要的输出 - 我需要以不同的方式声明 size() 吗?或者尝试通过处理将 jpg 文件调整为相同大小会更简单吗?

这在处理 2 中可行,但是 things changed in Processing 3: you simply need to use settings()

这是加载图像并将草图大小更改为图像尺寸的最小草图:

PImage img;

void settings(){
  img = loadImage("https://processing.org/img/processing-web.png");
  println(img.width, img.height);
  size(img.width, img.height);
}
void setup(){
  image(img, 0, 0);
}

你的代码应该是这样的:

PImage bg;
int wWidth;
int wHeight;

void settings(){
  bg = loadImage("102.jpg");
  println(bg.width);
  println(bg.height);
  wWidth = bg.width;
  wHeight = bg.height;
  size(wWidth, wHeight);
}

void setup() {
  
}
void draw() {
  background(bg);
}

稍微简单一点的版本是:

PImage bg;

void settings(){
  bg = loadImage("102.jpg");
  println(bg.width);
  println(bg.height);
  size(bg.width, bg.height);
}

void setup() {
  
}
void draw() {
  background(bg);
}

wWidth, wHeight 变量可能是多余的,因为 Processing 的 width,height 变量在 size() 被调用后存储相同的数据。