image - Plot gradients using PIL in Python -


i'm creating images using python, basics. thing i'm using

myimage = image.new('rgb', (250, 250), 'rgb(155,89,182)') 

and well, creates image. but, there way create image background of color i'm choosing gradients? let me explain little bit more, want pick blue color, then, want deep blue in edges , more light blue in center of image. possible using simple pil , python? thank in advance.

the code depends on how want gradient look.

make rectangular gradient this:

a rectangular gradient

or make round gradient this:

a round gradient

this code round gradient:

import image import math  imgsize = (250, 250) #the size of image  image = image.new('rgb', imgsize) #create image  innercolor = [80, 80, 255] #color @ center outercolor = [0, 0, 80] #color @ corners   y in range(imgsize[1]):     x in range(imgsize[0]):          #find distance center         distancetocenter = math.sqrt((x - imgsize[0]/2) ** 2 + (y - imgsize[1]/2) ** 2)          #make on scale 0 1         distancetocenter = float(distancetocenter) / (math.sqrt(2) * imgsize[0]/2)          #calculate r, g, , b values         r = outercolor[0] * distancetocenter + innercolor[0] * (1 - distancetocenter)         g = outercolor[1] * distancetocenter + innercolor[1] * (1 - distancetocenter)         b = outercolor[2] * distancetocenter + innercolor[2] * (1 - distancetocenter)           #place pixel                 image.putpixel((x, y), (int(r), int(g), int(b)))  image.save('circlegradient.jpg') 

for each pixel, sets red, green, , blue values somewhere in between innercolor , outercolor depending on distance pixel center.

code rectangular gradient:

import image  imgsize = (250, 250) #the size of image  image = image.new('rgb', imgsize) #create image  innercolor = [80, 80, 255] #color @ center outercolor = [0, 0, 80] #color @ edge   y in range(imgsize[1]):     x in range(imgsize[0]):          #find distance closest edge         distancetoedge = min(abs(x - imgsize[0]), x, abs(y - imgsize[1]), y)          #make on scale 0 1         distancetoedge = float(distancetoedge) / (imgsize[0]/2)          #calculate r, g, , b values         r = innercolor[0] * distancetoedge + outercolor[0] * (1 - distancetoedge)         g = innercolor[1] * distancetoedge + outercolor[1] * (1 - distancetoedge)         b = innercolor[2] * distancetoedge + outercolor[2] * (1 - distancetoedge)           #place pixel                 image.putpixel((x, y), (int(r), int(g), int(b)))  image.save('rectgradient.jpg') 

this works same way, except measures distance closest edge, not center.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -