2011年7月27日 星期三

DDD_127 Exhibition Poster :City_God_Image (Processing)

透過Processing將影像的明亮度
轉換為方塊的層次
顏色越暗 offset次數越多

Using the Processing to read the brightness of the image
and transfer to the offset times of the single square.

原圖為下
是為霞海城隍廟之城隍爺像

the original image:
The image is one of the famous God in Chinese culture.
This is the City God in Di-Hua district.


近看運算出來的結果
Get the closer view of the result:

請把你要改變的圖放到此Processing的檔案中
並且更改程式內的名字
與輸出PDF的名字即可

Please put your image in your code folder
and change the image's name 
and the name of the out-put PDF file  

The code is:
PImage img;       // The source image
int cellsize = 4; // Dimensions of each cell in the grid
int cols, rows;   // Number of columns and rows in our system
import processing.pdf.*;

void setup() {
  size(1700,2000);
  noLoop();
  beginRecord(PDF, "002.pdf");//name your pdf file 改變你輸出後的PDF名字
  
  smooth();
  img  = loadImage("009.jpg"); // Load the image 這是你原本圖檔的名字
  cols = img.width/cellsize;             // Calculate # of columns
  rows = img.height/cellsize;            // Calculate # of rows
}

void draw() {

background(255);
noLoop();

  loadPixels();
  // Begin loop for columns
  for ( int i = 0; i < cols;i++) {
    // Begin loop for rows
    for ( int j = 0; j < rows;j++) {
      int x = i*cellsize;//+ cellsize/2 ; // x position
      int y = j*cellsize;//+ cellsize/2 ; // y position
      int loc = x + y*img.width;           // Pixel array location
      color c = img.pixels[loc];       // Grab the color
      // Calculate a z position as a function of mouseX and pixel brightness
      //float z = (100/(float)width) * brightness(img.pixels[loc]) - 100.0);
      // Translate to the location, set fill and stroke, and draw the rect
      pushMatrix();

      float m =brightness(img.pixels[loc]);
      translate(4*x+2*i,4*y+2*j);
      stroke(0);
      
      if(m<255&&m>175){//亮度在175-255之間 畫一個方塊      
      boxes(1);
      }
      
      if(m<=175&&m>100){//亮度在100-175之間 畫兩個方塊         
      boxes(2);
      }
      
      if(m<=100&&m>50){//亮度在50-100之間 畫三個方塊               
      boxes(3);
      }

      if(m<=50&&m>0){//亮度在0-50之間 畫四個方塊                  
      boxes(4);
      }
     
      popMatrix();
      }
    }
   
  endRecord();

}

void boxes(int n){

    for(int k=1; k<=n;k=k+1){
          rectMode(CENTER); 
         strokeWeight(0.5); 
      rect(0,0,4*(cellsize-k+1),4*(cellsize-k+1));
    //ellipse(t-cellsize/4*n,s-cellsize/4*n,cellsize/n,cellsize/n);
    }
}

}



3 則留言:

  1. 你好 我一直對你的研究有興趣 也感到佩服 很不好意思的打擾你 我們公司對於數位建築方面還算是小有研究 目前也在積極的徵才 不曉得你是否有知道適合的人才可以幫忙推薦與告知 感激
    以下是我們爭才的訊息
    http://www.archifield.net/vb/showthread.php?t=9391

    回覆刪除
  2. 還有這裡
    http://www.mmag.com.tw/job/article.php?job_no=24&page=1

    回覆刪除
  3. 謝謝你的支持 台灣這方面的人才其實不多 沒想到有公司再做數位建築方面的事情 我可以幫你詢問一下 謝謝~

    回覆刪除