如何解决Jupyter Notebook单元不断运行永不停止
在我的课程中,我必须创建以下图片(一张没有效果)
以下是我到目前为止尝试过的内容:
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,255))
else:
z = 5
drawing_object.rectangle((0,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,90)
elif x in range(w,2 * w) and y in range(0,1]
for i in range(w):
for j in range(h):
pixels[i,50)
elif x in range(2 * w,3 * w) and y in range(0,2]
for i in range(w):
for j in range(h):
pixels[i,10)
#--------1st row---------
elif x in range(0,w) and y in range(h,2 * h): # grid[1,j] = (90,0)
elif x in range(w,2 * w) and y in range(h,j] = (50,90)
elif x in range(2 * w,3 * w) and y in range(h,j] = (10,0)
#--------2nd row----------
elif x in range(0,w) and y in range(2 * h,3 * h): # grid[2,90,2 * w) and y in range(2 * h,50,0)
elif x in range(2 * w,3 * w) and y in range(2 * h,2]
for i in range(w):
for j in range(h):
pixels[i,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)
image
是我得到的。当我运行此程序时,Jupyter Notebook单元将继续运行[*]
。好吧,在我用pixels
添加代码的一部分(在#-->> I think the problem starts HERE <<--
之后)之前,我在完全相同的视图中具有此网格,但是没有颜色效果。但是现在,我可能犯了一些错误。
感谢您的帮助。
解决方法
在代码的以下部分-
// this.queue(request);
// Get the token from the auth service.
const token: string = this.localStorageService.getToken() ? this.localStorageService.getToken() : null;
let options = {};
if (token && request.url.indexOf('refreshlogin') === -1) {
options = {
headers: request.headers
.set('Authorization','Bearer ' + token)
.set('Accept','application/hal+json')
};
}
// Clone the request to add the new header.
let clonedRequest = request.clone(options);
// Pass on the cloned request instead of the original request.
return next.handle(clonedRequest)
.pipe(
tap((evt: HttpEvent<any>) => {
if (evt instanceof HttpResponse) {
localStorage.setItem('lastActivity',moment().format());
this.spinnerService.hide();
}
},(err: any) => {
if (err.status === 401 || err.status === 403) {
const expirationTime = localStorage.getItem('expire_in');
const lastActivity = localStorage.getItem('lastActivity');
const now = moment().format();
const idleTime = moment(now).diff(moment(lastActivity),'seconds');
if (idleTime > Number(expirationTime)) {
// call refresh token
return this.authService.refreshToken().pipe(switchMap(
(response: any) => {
if (response.status === 200) {
const decodedToken = jwt_decode(response.access_token);
this.localStorageService.storeToken(response.access_token);
this.localStorageService.storeExpireIn(response.expires_in);
this.localStorageService.storeRefreshToken(response.refresh_token);
this.localStorageService.storeloggedInFlag(CryptoJS.AES.encrypt(loggedInFlag,secretKey).toString());
this.store.dispatch(new authActions.SetCurrentUser(decodedToken.displayName));
clonedRequest = clonedRequest.clone({
setHeaders: {
Authorization: 'Bearer ' + response.access_token,Accept: 'application/hal+json'
}
});
return next.handle(clonedRequest);
} else {
this.spinnerService.hide();
this.localStorageService.logout();
}
}
));
} else {
this.spinnerService.hide();
this.localStorageService.logout();
}
}
})
);
}
...您不是一次又一次地用值更新整个范围(w)和范围(h)吗?那是你要的吗?您正在检查x和y是否在特定范围内,但是您只是在向每个像素写入某个值,而不是写入特定的像素。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。