我有一个使用PIL创建的图像
import Image
import ImageDraw
img = Image.new("RGB", (400,400), "white")
draw = ImageDraw.Draw(img)
coords = [(100,70), (220, 310), (200,200)]
dotSize = 2
for (x,y) in coords:
draw.rectangle([x,y,x+dotSize-1,y+dotSize-1], fill="black")
我知道要编辑此图像并在同一图像上拍摄每个坐标并制作对角镜像。
我可以用这个方法吗? 我想有这个效果!https://imgur.com/Q6LLhmk
答案 0 :(得分:3)
您可以使用PIL的transpose
,rotate
和composite
函数来获得所需的结果。这些都在Image模块中。
我稍微更改了初始图像以使结果更清晰。首先,我增加了每个点的大小,使它们更加引人注目。
下面的代码首先显示覆盖了遮罩的初始图像,该遮罩选择左上角到右下角对角线下方的图像的一半。
然后它显示原始图像和镜像的合成。
import Image
import ImageDraw
imsize = 400
img = Image.new("L", (imsize,imsize), "white")
draw = ImageDraw.Draw(img)
coords = [(100,70), (220, 310), (200,200), (80,20)]
dotSize = 50
for (x,y) in coords:
draw.rectangle([x,y,x+dotSize-1,y+dotSize-1], fill="black")
## mirror image along the diagonal
img2 = img.rotate(90).transpose(Image.FLIP_TOP_BOTTOM)
## mask
mask = Image.new("L", (imsize,imsize), "black")
maskdraw = ImageDraw.Draw(mask)
# draw a triangle on the mask dividing the image along the diagonal
maskdraw.polygon([(0,0),(0,imsize),(imsize,imsize)], fill="white")
# show the mask overlaid on the original image
Image.blend(mask, img, 0.5).show()
# compute and show the blended result
img3 = Image.composite(img, img2, mask)
img3.show()