我有一个尺寸为(600, 300)
的图像,该图像是用以下代码制作的:
from PIL import Image, ImageDraw
im = Image.new('RGB', (600, 300), (255,255,255))
draw = ImageDraw.Draw(im)
draw.rectangle((0, 0, 600, 300/3), fill=(174,28,40)) #rood
draw.rectangle((0, 200, 600, 400), fill=(33,70,139)) #rood
im.save('result.jpg', quality=95)
图像具有三个水平条纹,它们具有不同的颜色(红色,白色和蓝色),如下所示:
rrrrrr
wwwwww
bbbbbb
我想拍摄图像的后半部分,然后将其顺时针旋转90度。
rrrrwb
wwwrwb
bbbrwb
这可以用Python完成吗?
答案 0 :(得分:1)
Crop图像的右侧部分,rotate旋转90度,然后paste返回图像。只需一行即可完成所有操作:
from PIL import Image, ImageDraw, ImageOps
im = Image.new('RGB', (600, 300), (255, 255, 255))
draw = ImageDraw.Draw(im)
draw.rectangle((0, 0, 600, 300/3), fill=(174, 28, 40))
draw.rectangle((0, 200, 600, 400), fill=(33, 70, 139))
# Crop right part of image, rotate by 90 degrees, and paste back into image
im.paste(im.crop((300, 0, 600, 300)).rotate(90), (300, 0))
im.save('result.jpg', quality=95)
希望有帮助!
答案 1 :(得分:0)
我正在制作荷兰/法国国旗组合
借助HansHirse的帮助,我可以获得我想要的结果,即法国和荷兰国旗的统一。
from PIL import Image, ImageDraw
im = Image.new('RGB', (600, 300), (255,255,255))
draw = ImageDraw.Draw(im)
draw.rectangle((0, 0, 600, 300/3), fill=(174,28,40)) #red
draw.rectangle((0, 200, 600, 400), fill=(33,70,139)) #blue
# the rotation needs to be the other way around
sub_image = im.crop(box=(300,0,600,300)).rotate(-90) # can use negative value
im.paste(sub_image, box=(300,0)) # box=(0,300) to paste in front
im.save('dutchFrench.jpg', quality=95)