根据指定的原始图像和掩码图像,生成一个圆形图像

编程入门 行业动态 更新时间:2024-10-11 15:22:44

根据指定的原始<a href=https://www.elefans.com/category/jswz/34/1771430.html style=图像和掩码图像,生成一个圆形图像"/>

根据指定的原始图像和掩码图像,生成一个圆形图像

QPixmap BasicWindow::getRoundImage(const QPixmap &src, QPixmap &mask, QSize maskSize)
{if (maskSize == QSize(0, 0))//如果是00   就用空的尺寸大小{maskSize = mask.size();}else {//KeepAspectRatio尽可能大的矩形进行缩放    SmoothTransformation装换的模式  平滑mask = mask.scaled(maskSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);//根据尺寸大小进行缩放}//保存转换后的图像QImage resultImage(maskSize, QImage::Format_ARGB32_Premultiplied);//格式进行转换  这样转换后的图像会比较清晰QPainter painter(&resultImage);//用结果图像进行初始化//设置图片叠加模式  CompositionMode_Source将原图像用复制的方式进行操作painter.setCompositionMode(QPainter::CompositionMode_Source);//输出圆头像的像素painter.fillRect(resultImage.rect(), Qt::transparent);//填充矩形  是透明分painter.setCompositionMode(QPainter::CompositionMode_SourceOver);//painter.drawPixmap(0, 0, mask);//画painter.setCompositionMode(QPainter::CompositionMode_SourceIn);//叠加方式进入painter.drawPixmap(0, 0, src.scaled(maskSize,Qt::KeepAspectRatio, Qt::SmoothTransformation));//画painter.end();return QPixmap::fromImage(resultImage);
}

这段代码是一个函数`getRoundImage`,用于获取圆形图像。下面是对代码的解释:

首先,该函数接受三个参数:原始图像`src`、掩码图像`mask`和掩码尺寸`maskSize`。

如果`maskSize`为`(0, 0)`,则将使用`mask`的实际尺寸作为掩码尺寸。否则,将根据指定的`maskSize`对`mask`进行缩放操作,使用`Qt::KeepAspectRatio`和`Qt::SmoothTransformation`参数来保持图像的长宽比并平滑地进行转换。

之后,创建一个与掩码尺寸相同的`QImage`对象`resultImage`,像素格式设置为`QImage::Format_ARGB32_Premultiplied`,以实现更清晰的图像。

使用`QPainter`对象`painter`初始化`resultImage`。

接下来,设置绘图模式为`QPainter::CompositionMode_Source`,将原图像的像素输出到`resultImage`中,并用透明色填充整个矩形区域。

然后,设置绘图模式为`QPainter::CompositionMode_SourceOver`,使用`drawPixmap`方法在指定位置绘制`mask`。

再次设置绘图模式为`QPainter::CompositionMode_SourceIn`,使用`drawPixmap`方法在指定位置绘制经过缩放的原始图像`src`。

最后,结束绘画操作,将`resultImage`转换为`QPixmap`对象,并返回该对象。

总体而言,这段代码的作用是根据指定的原始图像和掩码图像,生成一个圆形图像。

更多推荐

根据指定的原始图像和掩码图像,生成一个圆形图像

本文发布于:2023-12-05 12:13:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1664180.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图像   圆形   掩码   原始

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!