第13章 圖像像素採樣(《Python趣味創意編程》教學視頻) - 知乎

本章咱們將實現圖像像素採樣的繪製效果,如圖所示。首先學習圖像文件的讀取與顯示,獲取像素顏色;而後生成馬賽克效果,並實現隨機採樣畫圓、均勻採樣畫圓;最後利用葉序採樣的方式,實現風格化圖像的自動生成。python

知乎視頻www.zhihu.com圖標

視頻教程:ide

知乎視頻www.zhihu.com圖標

最終代碼:svg

def setup():    
  global img,goldenRatioAngle # 全局變量
  goldenRatioAngle = ((sqrt(5)-1)/2)*360 # 黃金分割比乘以360度
  noStroke() # 不繪製線條
  size(500, 500) # 畫面大小
  img = loadImage("image2.jpg") # 導入圖片文件

def draw():
  background(255)  # 白色背景 
  center_x = width/2 # 畫面中心
  center_y = height/2
  id = 0 # 葉序採樣點的序號
  radius = 1 # 初始半徑(採樣點到畫面中心的距離)
  radiusStep = map(mouseX,0,height,5,1) # 半徑增長的步長
  maxDiameter = map(mouseY,0,width,1,6) # 畫圓的最大直徑

  while radius<=width/2: # 當半徑小於畫面寬度一半時
    degree = id*goldenRatioAngle # 當前採樣點和中心連線的角度
    angle = radians(degree%360) # 轉換爲弧度
    radius = sqrt(id) * radiusStep  # 採樣點到中心的距離,逐漸增長 
    x = center_x + radius*cos(angle) # 求出當前採樣點的座標
    y = center_y + radius*sin(angle) 
    c = img.get(int(x), int(y))  # 當前採樣像素的顏色
    fill(c) # 設置爲填充顏色
    bright = brightness(c) # 當前像素的亮度值
    diameter = map(bright,0,255,maxDiameter,1) # 越亮直徑越小 
    circle(x,y,diameter) # 畫一個小圓
    id += 1  # 採樣點序號加1

這一章主要要學習了while循環語句,講解了圖像的基本概念,利用這些知識實現了圖像像素採樣。讀者也能夠利用圖像做爲基本元素,繪製出更加豐富有趣的互動效果。學習

相關文章
相關標籤/搜索