'The Jupyter Notebook cell keeps being run (never stops)
In my coursework, I have to create the following picture (with one piece with no effect on it)
Below is what I have tried so far:
import PIL
from PIL import Image
from PIL import ImageEnhance
from PIL import ImageDraw
from PIL import ImageFont
fnt = ImageFont.truetype('readonly/fanwood-webfont.ttf', 75)
# read image and convert to RGB
image=Image.open("readonly/msi_recruitment.gif").convert('RGB')
drawing_object = ImageDraw.Draw(image)
# build a list of 9 images which have different brightnesses
enhancer=ImageEnhance.Brightness(image)
images=[]
x = 0
for i in range(0, 10):
x += 1
z = x
if x % 3 == 0 :
z = 9
drawing_object.rectangle((0,450,800,325), fill='black')
drawing_object.text((20,350),'channel intensity 0.{}'.format(z), font=fnt, fill=(255,255,255))
elif x % 3 == 1:
z = 1
drawing_object.rectangle((0,450,800,325), fill='black')
drawing_object.text((20,350),'channel intensity 0.{}'.format(z), font=fnt, fill=(255,255,255))
else:
z = 5
drawing_object.rectangle((0,450,800,325), fill='black')
drawing_object.text((20,350),'channel intensity 0.{}'.format(z), font=fnt, fill=(255,255,255))
images.append(enhancer.enhance(10/10))
## create a contact sheet from different brightnesses
first_image=images[0]
contact_sheet=PIL.Image.new(first_image.mode, (first_image.width*3,first_image.height*3))
x=0
y=0
for img in images:
# Lets paste the current image into the contact sheet
contact_sheet.paste(img, (x, y) )
#-->> I think the problem starts HERE <<--
pixels = img.load()
w = image.width
h = image.height
for x in range(3 * w):
for y in range(3 * h):
#-------0th row---------
if x in range(0, w) and y in range(0, h): # grid[0,0]
for i in range(w):
for j in range(h):
pixels[i, j] = (0,0,90)
elif x in range(w, 2 * w) and y in range(0, h): # grid[0,1]
for i in range(w):
for j in range(h):
pixels[i, j] = (0,0,50)
elif x in range(2 * w, 3 * w) and y in range(0, h): # grid[0,2]
for i in range(w):
for j in range(h):
pixels[i, j] = (0,0,10)
#--------1st row---------
elif x in range(0, w) and y in range(h, 2 * h): # grid[1,0]
for i in range(w):
for j in range(h):
pixels[i, j] = (90,0,0)
elif x in range(w, 2 * w) and y in range(h, 2 * h): # grid[1,1]
for i in range(w):
for j in range(h):
pixels[i, j] = (50,0,90)
elif x in range(2 * w, 3 * w) and y in range(h, 2 * h): # grid[1,2]
for i in range(w):
for j in range(h):
pixels[i, j] = (10,0,0)
#--------2nd row----------
elif x in range(0, w) and y in range(2 * h, 3 * h): # grid[2,0]
for i in range(w):
for j in range(h):
pixels[i, j] = (0,90,0)
elif x in range(w, 2 * w) and y in range(2 * h, 3 * h): # grid[2,1]
for i in range(w):
for j in range(h):
pixels[i, j] = (0,50,0)
elif x in range(2 * w, 3 * w) and y in range(2 * h, 3 * h): # grid[2,2]
for i in range(w):
for j in range(h):
pixels[i, j] = (0,10,0)
# Now we update our X position. If it is going to be the width of the image, then we set it to 0
# and update Y as well to point to the next "line" of the contact sheet.
if x+first_image.width == contact_sheet.width:
x=0
y=y+first_image.height
else:
x=x+first_image.width
# resize and display the contact sheet
contact_sheet = contact_sheet.resize((int(contact_sheet.width/2),int(contact_sheet.height/2) ))
display(contact_sheet)
Here the image
is the piece I am given. When I run this the Jupyter Notebook cell keeps being run [*]
. Well, before I added the part of the code with pixels
(after #-->> I think the problem starts HERE <<--
) I had this grid exactly in the same view but without color effects. But now, I probably made some mistakes.
Solution 1:[1]
In the following part of the code -
elif x in range(w, 2 * w) and y in range(2 * h, 3 * h): # grid[2,1]
for i in range(w):
for j in range(h):
pixels[i, j] = (0,50,0)
elif x in range(2 * w, 3 * w) and y in range(2 * h, 3 * h): # grid[2,2]
for i in range(w):
for j in range(h):
pixels[i, j] = (0,10,0)
... Aren't you just updating the whole range(w) and range(h) with values again and again? Is that what you want? You are checking if x and y are in a certain range, but then you are just writing each pixel with some value, instead of writing specific pixels.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Akshay Sehgal |