【作品No.65】同じ画像をランダムな位置に表示させてピクセル化する

【作品No.65】同じ画像をランダムな位置に表示させてピクセル化する
  • URLをコピーしました!

この記事を書いた人

ワタタク(Watataku)
  • クリエイティブコーダー / アーティスト
  • 「人の心に寄り添う、機能するアート」を探究しています
  • アートとテクノロジーが、社会や個人のウェルビーイングにどう貢献できるかに、関心があります

目次

作品の画像とコード

【作品No.65】同じ画像をランダムな位置に表示させてピクセル化する

アニメーション。

3枚目のアニメーションです。

PImage img;
float pixelSize = 10; // 初期ピクセルサイズ
float growthRate = 7; // サイズ変更の速さ

// ランダムな位置とサイズを格納する配列
int[] offsetsX = new int[4];
int[] offsetsY = new int[4];
int[] widths = new int[4];
int[] heights = new int[4];

void setup() {
  size(1080, 1080);
  img = loadImage("83, White house, Spain, Mijas.jpg");
  frameRate(60);
  smooth();

  // ランダムな位置とサイズを生成
  for (int i = 0; i < 4; i++) {
    widths[i] = int(random(300, width)); // 幅を画面に合わせた大きさでランダムに
    heights[i] = int(random(300, height)); // 高さを画面に合わせた大きさでランダムに
    offsetsX[i] = int(random(0, width - widths[i])); // X位置をランダムに
    offsetsY[i] = int(random(0, height - heights[i])); // Y位置をランダムに
  }
}

void draw() {
  background(0);

  // 4つのランダムな画像を描画
  for (int i = 0; i < 4; i++) {
    drawImageAt(offsetsX[i], offsetsY[i], widths[i], heights[i]);
  }

  // ピクセルサイズを変更
  pixelSize += growthRate;
  if (pixelSize >= 50 || pixelSize <= 10) {
    growthRate *= -1; // 逆方向へ切り替え

    // 新しいランダム位置とサイズを設定
    for (int i = 0; i < 4; i++) {
      widths[i] = int(random(300, width)); // 大きなサイズ範囲に調整
      heights[i] = int(random(300, height));
      offsetsX[i] = int(random(0, width - widths[i]));
      offsetsY[i] = int(random(0, height - heights[i]));
    }
  }
}

void drawImageAt(int offsetX, int offsetY, int imgWidth, int imgHeight) {
  PImage resizedImg = img.copy();
  resizedImg.resize(imgWidth, imgHeight); // ランダムサイズにリサイズ

  for (int y = 0; y < imgHeight; y += int(pixelSize)) {
    for (int x = 0; x < imgWidth; x += int(pixelSize)) {
      color c = resizedImg.get(x, y); // 元画像から色を取得
      fill(c);
      noStroke();
      rect(offsetX + x, offsetY + y, pixelSize, pixelSize); // ピクセル化して描画
    }
  }
}
ワタタク

それでは今日もレッツワクワクコーディング。

ワタタク(Watataku)
クリエイティブコーダー/アーティスト
AIと共に、「人の心に寄り添う、機能するアート」を探究しています。

ここは、その思索と創造の全記録を記す、思考の実験室(アトリエ)です。

僕の創作の源泉は、人生経験そのものです。
不当な出来事や、精神的な支配の中で、私の心は何度も粉々に砕け散りました。しかし、その一つ一つの破片をどのようにすれば鮮やかな絵の具にできるかを考え、ゆっくり心のパレットに色を整えていきました。その、長い、長い、自身との対話の果てに「人の役に立つアートを作りたい」という考え方にたどり着きました。

かつて、僕の武器は、アコースティックギター弾き語りと、カメラでした。
オリジナルソングの演奏でお客様投票1位となった「物語の力」。
世界20カ国の旅で培った、多様な「視点」。

今、僕は、それら全ての経験を、「コード」という、新しい言語で、世界に問いかけています。

このブログでは、作品の制作過程や、日々の発見、そして、僕自身の上達の軌跡を記録していきます。

僕の旅が、あなたの日常を、ほんの少しでも豊かにするための、光になることを願って。

クリエイティブコーディングロード運営者 ワタタク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次