如何将图片左右两半互换位置并保持原尺寸
实现图片左右两半互换的解决方案
要实现将图片左右两半互相替换的效果:
- 原始图:

- 目标效果:

之前尝试用crop方法,但操作后无法保持原图片尺寸,现有问题代码如下:
im = Image.open("image.png") w, h = im.size im = im.crop((0,0,int(w/2),h)) im.paste(im, (int(w/2),0,w,h)) im.save('test.png')
问题原因
你之前的代码错误地将裁剪后的左半图覆盖了原图片对象,此时im的尺寸已经变成原图的一半,后续粘贴操作只能得到左半部分重复的结果,无法实现左右互换。
正确实现代码
要保留原尺寸并完成互换,需要分别裁剪左右两个区域,再将它们粘贴回对应位置:
from PIL import Image # 打开原始图片 im = Image.open("image.png") width, height = im.size # 裁剪出左右两半区域(注意不要覆盖原图) left_part = im.crop((0, 0, width // 2, height)) right_part = im.crop((width // 2, 0, width, height)) # 创建与原图尺寸一致的新画布 result_img = Image.new(im.mode, (width, height)) # 将右半部分粘贴到左侧,左半部分粘贴到右侧 result_img.paste(right_part, (0, 0)) result_img.paste(left_part, (width // 2, 0)) # 保存最终结果 result_img.save('test.png')
代码说明
- 先分别裁剪出原图的左半区和右半区,保留原图片对象不被修改
- 创建一个和原图尺寸、色彩模式一致的新画布
- 将右半区域粘贴到画布的左侧位置,左半区域粘贴到右侧位置,完成互换
内容的提问来源于stack exchange,提问作者ati
相关产品推荐
相关产品推荐

