首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PIL镜像坐标

PIL镜像坐标
EN

Stack Overflow用户
提问于 2013-02-12 20:19:58
回答 1查看 2.1K关注 0票数 2

我有一个使用PIL创建的图像

代码语言:javascript
复制
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")

我知道要编辑这个图像,取每个坐标,并在同一图像上制作它的对角镜像。

有什么方法可以用来做这件事吗?我希望有这样的效果

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-12 20:55:08

您可以使用PIL的transposerotatecomposite函数来实现所需的结果。这些都在Image模块中。

为了使结果更清晰,我对初始图像做了一些修改。首先,我增加了每个点的大小,以使它们更引人注目。

下面的代码首先显示了覆盖了蒙版的初始图像,该蒙版选择了从左上角到右下角的对角线下的图像的一半。

然后显示原始图像和镜像图像的合成。

代码语言:javascript
复制
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()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14832425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档