1

Я хочу преобразовать изображения, подобные этому, чтобы добавить эффект к изображениям в django как described here.Как перебирать столбцы изображения?

koala waved

я решил реализовать его как процесс великого django -imagekit/photologue

Мои знания PIL не очень хорошо, поэтому мой вопрос

Как называть столбец пикселей синусовым смещением в PIL?

любые намеки (код, Линс, общие мысли) приветствуются

ответ

6

Вот быстро-н-грязный пример, который должен привести вас к правильному направлению:

from PIL import Image, ImageOps 
import math 

src = Image.open('arched.jpg') 

ampl = step = 10 

img = ImageOps.expand(src, border=ampl*4, fill='white') 
size = img.size 

straight_mesh = {} 
distorted_mesh = {} 
for y in range(size[1]//step-1): 
    py = step*(y+1) 
    dx = -int(round(ampl*math.sin(py*math.pi/size[1]))) 
    print dx 
    for x in range(size[0]//step-1): 
     px = step*(x+1) 
     straight_mesh[x, y] = (px, py) 
     distorted_mesh[x, y] = (px+dx, py) 
transform = [] 
for x in range(size[0]//step-2): 
    for y in range(size[1]//step-2): 
     transform.append((
      map(int, straight_mesh[x, y] + straight_mesh[x+1, y+1]), 
      map(int, distorted_mesh[x, y] + distorted_mesh[x, y+1] + \ 
        distorted_mesh[x+1, y+1] + distorted_mesh[x+1, y]) 
     )) 
img = img.transform(size, Image.MESH, transform, Image.BICUBIC) 
img = ImageOps.crop(img, border=ampl*2) 
img.save('result.jpg') 
Смежные вопросы