PIL Image 没有按照我想要的方式裁剪
PIL Image not cropping the way I want
我正在尝试与彩色图像建立联系 sheet。完全去饱和至全彩,
但问题是输出是第一张裁剪图像的 10 张图像。
代码如下:
import PIL
from PIL import ImageEnhance
from PIL import Image
image = Image.open("img.jpg").convert("RGB")
contact_sheet = PIL.Image.new(image.mode,(1920,1080))
enhancer = ImageEnhance.Color(image)
images = []
current_location = 0
for i in range(10):
images.append(enhancer.enhance(i/10))
for img in images:
contact_sheet.paste(img,(current_location,0))
image.crop((current_location,0,current_location+192,0+1080))
current_location+=192
imagesave = contact_sheet.save("CroppedContactSheet.jpg")
您需要将 crop
函数的结果赋给一个变量。 crop
函数未更改图像,但返回裁剪后的版本,另请参阅 the docs,使用此输入:
和这个修改后的代码:
import PIL
from PIL import ImageEnhance
from PIL import Image
image = Image.open("img.jpg").convert("RGB")
contact_sheet = PIL.Image.new(image.mode,(1920,1080))
enhancer = ImageEnhance.Color(image)
images = []
current_location = 0
for i in range(10):
images.append(enhancer.enhance(i/10))
for img in images:
# Changed here slightly, current_slice is what we want to paste into the new image
current_slice = img.crop((current_location,0,current_location+192,0+1080))
contact_sheet.paste(current_slice,(current_location,0))
current_location+=192
#display(contact_sheet)
imagesave = contact_sheet.save("CroppedContactSheet.jpg")
我们得到这个输出:
图片取自http://www.desktopwallpaperhd.net/view/raptor-sample-ford-auto-cartoon-205618.html
加法:
我不知道这是不是有意为之,但从你的问题来看,你似乎想从 enhancer.enhance(0)
转到 enhancer.enhance(1)
,但在你提供的代码中,你是从 0
到 9/10
,所以最后一个切片不是全彩,而是 90%。如果我们将代码更改为 enhancer.enhance(i/9)
,则输出为:
我正在尝试与彩色图像建立联系 sheet。完全去饱和至全彩, 但问题是输出是第一张裁剪图像的 10 张图像。
代码如下:
import PIL
from PIL import ImageEnhance
from PIL import Image
image = Image.open("img.jpg").convert("RGB")
contact_sheet = PIL.Image.new(image.mode,(1920,1080))
enhancer = ImageEnhance.Color(image)
images = []
current_location = 0
for i in range(10):
images.append(enhancer.enhance(i/10))
for img in images:
contact_sheet.paste(img,(current_location,0))
image.crop((current_location,0,current_location+192,0+1080))
current_location+=192
imagesave = contact_sheet.save("CroppedContactSheet.jpg")
您需要将 crop
函数的结果赋给一个变量。 crop
函数未更改图像,但返回裁剪后的版本,另请参阅 the docs,使用此输入:
和这个修改后的代码:
import PIL
from PIL import ImageEnhance
from PIL import Image
image = Image.open("img.jpg").convert("RGB")
contact_sheet = PIL.Image.new(image.mode,(1920,1080))
enhancer = ImageEnhance.Color(image)
images = []
current_location = 0
for i in range(10):
images.append(enhancer.enhance(i/10))
for img in images:
# Changed here slightly, current_slice is what we want to paste into the new image
current_slice = img.crop((current_location,0,current_location+192,0+1080))
contact_sheet.paste(current_slice,(current_location,0))
current_location+=192
#display(contact_sheet)
imagesave = contact_sheet.save("CroppedContactSheet.jpg")
我们得到这个输出:
图片取自http://www.desktopwallpaperhd.net/view/raptor-sample-ford-auto-cartoon-205618.html
加法:
我不知道这是不是有意为之,但从你的问题来看,你似乎想从 enhancer.enhance(0)
转到 enhancer.enhance(1)
,但在你提供的代码中,你是从 0
到 9/10
,所以最后一个切片不是全彩,而是 90%。如果我们将代码更改为 enhancer.enhance(i/9)
,则输出为: