1

Je veux transformer des images comme ceci pour ajouter un effet aux images dans django comme described here.Comment parcourir sur des colonnes d'une image?

koala waved

j'ai décidé de le mettre en œuvre un processus pour le grand django -imagekit/photologue

Ma connaissance de PIL est pas très bon, donc ma question est

Comment l'intention d'une colonne de pixels par un sinus-offset en PIL?

des conseils (code, Lins, pensées générales) sont les bienvenus

Répondre

6

Voici un exemple rapide n-sale qui devrait vous apporter la bonne direction:

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') 
Questions connexes