【问题标题】:Processing - Resize canvas based on jpg dimensions处理 - 根据 jpg 尺寸调整画布大小
【发布时间】:2021-12-15 16:14:20
【问题描述】:

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

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

    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 文件调整为相同大小会更简单吗?

【问题讨论】:

  • 您需要缩放图像,而不仅仅是更改大小。
  • 谢谢 - 这解决了我的问题 - 最初甚至没有考虑调整它的大小

标签: java image canvas processing


【解决方案1】:

这在处理 2 中可以工作,但 things changed in Processing 3:您只需要使用 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 变量可能是多余的,因为在调用 size() 之后,处理的 width,height 变量存储相同的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2014-12-06
    • 2015-01-30
    • 2014-05-13
    • 2021-10-29
    相关资源
    最近更新 更多