图片剪切和粘贴 - Python,PIL模块

3

我希望将两张图片(A和B,大小相同)分为上半部分和下半部分(A-Up,A-Down,B-Up,B-Down),然后创建新的图像:A-up + B-Down 和反之亦然(即,我想要一张新的图片,它的上半部分实际上是A的上半部分,下半部分是B的下半部分)。我使用PIL模块在Python中编写了下面的函数:

import Image  
def SplitFunction(BMP):  
      im = Image.open(BMP)  
      [x,y]=im.size  
      box1=(0,0,x,y/2)  
      box2=(0,y/2+1,x,y)  
      region1 = im.crop(box1)    
      region2 = im.crop(box2)  
      region1.show()  
      region2.show()  
      return [region1,region2]  

path1='c:/movie2frames/BMPs1/stim/1.BMP'  
path2='c:/movie2frames/BMPs1/stim/334.BMP'  

[r1a,r2a]=SplitFunction(path1)  
[r1b,r2b]=SplitFunction(path2)  
#end program 

我不知道如何粘贴新的部分。任何帮助都将不胜感激。
2个回答

3

如果您保留原始的全尺寸图像并将新的顶部粘贴到其中,则实际上这要容易得多。

box_top = (0, 0, x, y / 2)
top_part = im1.crop(box_top)
result = im2.copy()
result.paste(top_part, box_top)

谢谢。我理解逻辑(当然,它更容易),但不知何故,在粘贴命令时出现了一个错误,说图像不匹配(尽管它们最初的大小是相同的)。当然,我添加了im2.open(...)。有什么想法吗? - undefined
@user552231,请确保它们处于相同的模式下。如有必要,请使用convert函数将其转换为“RGB”模式。 - undefined
谢谢你。但这似乎不是问题所在。我猜这个 bug 我得自己解决了。。我附上了新的函数 [但我猜它并不容易读懂:import Image def SplitFunction(BMP1,BMP2): im1 = Image.open(BMP1) im2 = Image.open(BMP2) [x,y]=im1.size box_top = (0, 0, x, y / 2 ) top_part = im1.crop(box_top) result = im2.copy() result.paste(im1, box_top) return resultpath1='c:/movie2frames/BMPs1/stim/1.BMP' path2='c:/movie2frames/BMPs1/stim/334.BMP' SplitFunction(path1,path2)] - undefined
@user552231,我的错误 - 应该是 result.paste(top_part, box_top) - undefined

1

你需要创建一个新的图像,其大小与两个部分相同:

im = Image.new(mode, size)

然后粘贴分离的图像:

im.paste(image, box)

更多细节请参阅文档:http://effbot.org/imagingbook/image.htm


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接