有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在处理中创建多色光栅化图片

我在Youtube上学习了本教程,并成功地为黑白图片添加了颜色。但是,我的意图是创建多色或渐变效果(如herehere),而不是在移动光标时切换颜色

我对处理非常陌生,我尝试过使用变量,但没有成功

以下是草图的代码片段: `

PImage img;

void setup() {
  size(598,336);
  colorMode(HSB);
  img = loadImage("picture-in-data-folder.jpg");
  img.resize(598,336);
  //ellipseMode(RADIUS);
  frameRate(30);
}

void draw() {
  background(255);
  noStroke();
  

//  fill(0);
  
  float tiles = mouseX/10;
  float tileSize = width/tiles;
  
// color section 

  fill(color(tiles, 255, 255));
  tileSize++;
  if (tiles > width / 2) {
    tileSize = 0;
  } 

// end color section

  translate(tileSize/2, tileSize/2);
  
  for (int x = 0; x < tiles; x++) {
    for (int y = 0; y < tiles; y++) {
      
      color c = img.get(int(x*tileSize),int(y*tileSize));
      float size = map(brightness(c), 0, 255, tileSize, 0);
      
    ellipse(x*tileSize, y*tileSize, size, size);
  // image(img, mouseX, mouseY);
    }
  }
}

如果您有任何提示,或者您能提供建议,我将不胜感激

谢谢


共 (1) 个答案

  1. # 1 楼答案

    简短回答:您需要在for循环中放置一个fill()命令

    长答覆:

    现在,您的代码正在执行以下操作:

    1. 基于mouseX定义tiles
    2. 将填充颜色设置为(tiles, 255, 255)
    3. 画圈

    我想你想要它做的是这样的:

    1. 将填充颜色设置为(21, 255, 255)(或任何您想要的第一种颜色)
    2. 画第一个圆圈
    3. 将填充颜色设置为渐变中的下一种颜色
    4. 画第二圈
    5. 等等

    为了做到这一点,您需要将一个命令放入for循环中,以更改填充颜色。有一种方法可以做到这一点:

    for (int x = 0; x < tiles; x++) {
      for (int y = 0; y < tiles; y++) {
        color c = img.get(int(x*tileSize),int(y*tileSize));
        float size = map(brightness(c), 0, 255, tileSize, 0);
    
        fill(map(x, 0, tiles, 0, 255), 255, 255);
        ellipse(x*tileSize, y*tileSize, size, size);
      }
    }
    

    我刚刚添加了fill命令作为x的一个函数,但是您可以随意使用它。为了使其成为梯度,它需要随xy而有所变化