gpt4 book ai didi

python - 如何在不保存图像其余部分的情况下使用 QPainterPath 裁剪图像

转载 作者:行者123 更新时间:2023-11-28 22:11:52 26 4
gpt4 key购买 nike

我有一个 QPainterPath,我想裁剪一个 QPixmap 图像。此代码对我有用,但我想使用 PyQt5 内置功能像没有 numpy 的面具

# read image as RGB and add alpha (transparency)
im = Image.open("frontal_1.jpg").convert("RGBA")

# convert to numpy (for convenience)
imArray = numpy.asarray(im)

# create mask
polygon = [(444, 203), (623, 243), (691, 177), (581, 26), (482, 42)]

maskIm = Image.new('L', (imArray.shape[1], imArray.shape[0]), 0)
ImageDraw.Draw(maskIm).polygon(polygon, outline=1, fill=1)
mask = numpy.array(maskIm)
...
newIm = Image.fromarray(newImArray, "RGBA")
newIm.save("out.png")

最佳答案

替换蒙版的一种可能方法是使用 QPainter 的 setClipPath() 方法:

from PyQt5 import QtCore, QtGui

if __name__ == '__main__':
image = QtGui.QImage('input.png')
output = QtGui.QImage(image.size(), QtGui.QImage.Format_ARGB32)
output.fill(QtCore.Qt.transparent)
painter = QtGui.QPainter(output)

points = [(444, 203), (623, 243), (691, 177), (581, 26), (482, 42)]
polygon = QtGui.QPolygonF([QtCore.QPointF(*point) for point in points])

path = QtGui.QPainterPath()
path.addPolygon(polygon)
painter.setClipPath(path)
painter.drawImage(QtCore.QPoint(), image)
painter.end()
output.save('out.png')

关于python - 如何在不保存图像其余部分的情况下使用 QPainterPath 裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55354509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com