Qt Qpixmap 生成模糊图像
Qt Qpixmap generates a blurry image
作为一个更大项目的一部分,我试图在 QPixmap 上绘制基本形状,但生成的图像总是显得模糊,即。圆圈不是纯红色圆圈,边缘模糊,颜色不是预期的真红色。这成为我需要图像的问题。这是相关的代码片段,我玩过抗锯齿选项和渲染提示,但我没有任何运气。任何帮助将不胜感激!
QPixmap pixmap(QSize(300,300));
QPainter painter( &pixmap);
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
painter.fillRect( QRectF(0, 0, 300, 300),Qt::white);
painter.setPen(Qt::red);
painter.drawEllipse( QPoint(150,150), 75, 75);
painter.setPen(Qt::green);
QLineF line(30, 30, 30, 270);
painter.drawLine(line);
pixmap.save("test1.jpg", "jpg", 100);
有人要求我附上一张图片来说明问题,这是一张特写图片,显示绿线不是真正的绿色,红色圆圈不是真正的红色并且边缘模糊。
红色的问题是 Qt 在保存为 JPG 格式时默认使用色度二次采样(2x2 块)。
避免此问题的唯一方法是使用其他格式。用 PNG 格式保存相同的图像 returns 纯红色圆圈 (255,0,0).
关于圆圈模糊,是因为QPainter::Antialiasing
RenderHint。在您的情况下,不使用任何 renderHints 会显示清晰的图像。下面您可以看到您的图像具有纯红色(PNG 格式)和锐利的边缘(不是 RenderHints)。考虑到最模糊的方法将使用 QPainter::Antialiasing
,因此如果您的目标是图像清晰度,请避免使用它。根据您的需要,您可以尝试 QPainter::HighQualityAntialiasing
RenderHint,但别无其他。
作为一个更大项目的一部分,我试图在 QPixmap 上绘制基本形状,但生成的图像总是显得模糊,即。圆圈不是纯红色圆圈,边缘模糊,颜色不是预期的真红色。这成为我需要图像的问题。这是相关的代码片段,我玩过抗锯齿选项和渲染提示,但我没有任何运气。任何帮助将不胜感激!
QPixmap pixmap(QSize(300,300));
QPainter painter( &pixmap);
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
painter.fillRect( QRectF(0, 0, 300, 300),Qt::white);
painter.setPen(Qt::red);
painter.drawEllipse( QPoint(150,150), 75, 75);
painter.setPen(Qt::green);
QLineF line(30, 30, 30, 270);
painter.drawLine(line);
pixmap.save("test1.jpg", "jpg", 100);
有人要求我附上一张图片来说明问题,这是一张特写图片,显示绿线不是真正的绿色,红色圆圈不是真正的红色并且边缘模糊。
红色的问题是 Qt 在保存为 JPG 格式时默认使用色度二次采样(2x2 块)。 避免此问题的唯一方法是使用其他格式。用 PNG 格式保存相同的图像 returns 纯红色圆圈 (255,0,0).
关于圆圈模糊,是因为QPainter::Antialiasing
RenderHint。在您的情况下,不使用任何 renderHints 会显示清晰的图像。下面您可以看到您的图像具有纯红色(PNG 格式)和锐利的边缘(不是 RenderHints)。考虑到最模糊的方法将使用 QPainter::Antialiasing
,因此如果您的目标是图像清晰度,请避免使用它。根据您的需要,您可以尝试 QPainter::HighQualityAntialiasing
RenderHint,但别无其他。