自定义抓取物品的图像
Customizing image of grabbed item
我有一个鼠标区域,我在点击它后抓取并保存到图像中。
MouseArea {
id: mouseArea
objectName: "testMouseArea"
width: 64;
height: 64
onPressed: tile.grabToImage(function (result) {
result.saveToFile("D:/ouput.png")
});
Rectangle {
id: tile
anchors.fill: parent
color: "blue"
}
}
在保存之前我想改变鼠标区域抓取图像的不透明度。
我已经添加了
result.image.opacity = 0.5
在保存之前,但没有帮助。输出文件具有相同的不透明度(完全没有影响)。
好的,最好的方法是将不透明度设置为保存的Item
,然后抓取图像。如果出于某种原因你想对图像做更多的事情,那么所有关于 QImage
处理。您可以使用适当的方法创建自定义 C++ 项,可能是单例或常规 QML 项:
bool ImageProcess::saveWithOpacity(const QImage &input, const QString &path, double opacity)
{
QImage image(input.size(), QImage::Format_ARGB32_Premultiplied);
image.fill(Qt::transparent);
QPainter p(&image);
p.setOpacity(opacity);
p.drawImage(0, 0, input);
p.end();
return image.save(path);
}
然后您可以在 QML 代码中使用它:
MouseArea {
id: area
...
onClicked: {
area.grabToImage(function (result) {
imgProcess.saveWithOpacity(result.image, "/path/to/file/img.png", 0.5);
});
}
...
}
我有一个鼠标区域,我在点击它后抓取并保存到图像中。
MouseArea {
id: mouseArea
objectName: "testMouseArea"
width: 64;
height: 64
onPressed: tile.grabToImage(function (result) {
result.saveToFile("D:/ouput.png")
});
Rectangle {
id: tile
anchors.fill: parent
color: "blue"
}
}
在保存之前我想改变鼠标区域抓取图像的不透明度。
我已经添加了
result.image.opacity = 0.5
在保存之前,但没有帮助。输出文件具有相同的不透明度(完全没有影响)。
好的,最好的方法是将不透明度设置为保存的Item
,然后抓取图像。如果出于某种原因你想对图像做更多的事情,那么所有关于 QImage
处理。您可以使用适当的方法创建自定义 C++ 项,可能是单例或常规 QML 项:
bool ImageProcess::saveWithOpacity(const QImage &input, const QString &path, double opacity)
{
QImage image(input.size(), QImage::Format_ARGB32_Premultiplied);
image.fill(Qt::transparent);
QPainter p(&image);
p.setOpacity(opacity);
p.drawImage(0, 0, input);
p.end();
return image.save(path);
}
然后您可以在 QML 代码中使用它:
MouseArea {
id: area
...
onClicked: {
area.grabToImage(function (result) {
imgProcess.saveWithOpacity(result.image, "/path/to/file/img.png", 0.5);
});
}
...
}