Python-使用PIL和Image处理完图片存储时出现的问题

使用如下代码

from PIL import Image
import numpy as np
im0 = np.array(Image.open("E:/1/1.jpg").convert("L"))#灰度方式打开图片,并且转换为数组
im1 = 255 - im0#反变换
pil_im = Image.fromarray(np.uint(im1))

pil_im.save("E:/1/im1.jpg")#存储

会出现问题
OSError: cannot write mode I as JPEGPython-使用PIL和Image处理完图片存储时出现的问题_第1张图片

from PIL import Image
import numpy as np
im0 = np.array(Image.open("E:/1/1.jpg").convert("L"))
im1 = 255-im0
pil_im = Image.fromarray(np.uint(im1))

pil_im = pil_im.convert("L")#添加此行代码即可解决

pil_im.save("E:/1/im1.jpg")

《Python语言程序设计基础(第二版)》嵩天

后续:循环保存

from PIL import Image
import numpy as np
im0 = np.array(Image.open("E:/1/1.jpg").convert("L"))
im1 = 255 - im0
im2 = (100/255)*im0+150
im3 = 255*(im1/255)**2
for s in range(1,4):

    file = Image.fromarray(np.uint(eval("im{}".format(s))))#np.uint()操作对象是一个变量而不是字符串,所以要用eval()变为可执行语句
    file = file.convert("L")
    file.save("E:/1/im{}.jpg".format(s))

初学python时常犯的小错误合集 -数据类型错误是最常见的

你可能感兴趣的:(初学python)