You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将图片左右两半互换位置并保持原尺寸

实现图片左右两半互换的解决方案

要实现将图片左右两半互相替换的效果:

  • 原始图:Original
  • 目标效果:Desired

之前尝试用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')

代码说明

  1. 先分别裁剪出原图的左半区和右半区,保留原图片对象不被修改
  2. 创建一个和原图尺寸、色彩模式一致的新画布
  3. 将右半区域粘贴到画布的左侧位置,左半区域粘贴到右侧位置,完成互换

内容的提问来源于stack exchange,提问作者ati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:00:58