程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PDF 中的 Qt 图像具有缩放伪像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决PDF 中的 Qt 图像具有缩放伪像?

开发过程中遇到PDF 中的 Qt 图像具有缩放伪像的问题如何解决?下面主要结合日常开发的经验,给出你关于PDF 中的 Qt 图像具有缩放伪像的解决方法建议,希望对你解决PDF 中的 Qt 图像具有缩放伪像有所启发或帮助;

我使用 QPainter::drawImage() 直接使用 QPrinter(设置为 HighResolution)生成一个 pdf 文档,在其中绘制一些像素图像 QImage。

图像尺寸非常小(大约 200x50 像素),并且只有 3 种颜色。我使用更大的 QRect 作为边界框在 pdf 中放大它们。

QImage 本身没有缩放。

我希望 pdf 中的图像清晰明了,但是,它们显示缩放伪像的方式与糟糕的 jpg 相同。 (我想要一种 png 代替...)。

我怎样才能防止这种情况发生?是 QPainter 还是 QPrinter 的问题? 图像压缩问题?还是 pdf 查看器?

QImage* image;

//...

QPrinter printer(QPrinter::HighResolution);
printer.setoutputfilename("/home/xxx/test.pdf");
printer.setoutputFormat(QPrinter::pdfFormat);

QPainter painter;
painter.begin(&printer);

const int SCAliNG = 30;
QRect imageFrame = image->rect();    // <-- here comes my QImage

imageFrame.setSize( imageFrame.size() * SCAliNG );
painter.drawImage( imageFrame,*image );

//...

painter.end();

编辑:澄清示例 这是 QImage 在屏幕上的样子:

PDF 中的 Qt 图像具有缩放伪像

当我将此图像放入 pdf 时,它看起来像这样,因此具有典型的 jpg 伪像。这张图片的边界框被放大到可以看到内容的细节,但使用的QImage是1:1(即文本像素之一是图像中的一个像素)。

PDF 中的 Qt 图像具有缩放伪像

当我在将图像放入 pdf 之前将图像本身放大 4 时(即 QImage 中的每个文本像素为 4x4 像素),它看起来像这样。更接近我想要的,但有放大的图片数据和多个文件大小。

PDF 中的 Qt 图像具有缩放伪像

我的问题是如何使用原始(小)QImage,它在 pdf 中以绝对清晰的像素方块显示,而没有这些伪影。

解决方法

我不确定“我想要一种 png”是什么意思。我的理解是,您似乎有 200x50 像素并且想要绘制 6000x1500 像素。这可能是由带有缩放算法的 drawImage() 完成的,这会产生模糊和其他故障。

如果你想要精确的绘图,不管大小,你都需要用 QPainter 来绘制图元。例如,如果我这样写:

QRadialGradient radialGrad(QPointF(100,100),100);
radialGrad.setColorAt(0,Qt::red);
radialGrad.setColorAt(0.5,Qt::bluE);
radialGrad.setColorAt(1,Qt::green);

painter.setBrush(QBrush(radialGrad));
painter.drawEllipse(160,100,50,50);
painter.drawRect(100,50);

这是我得到的:

PDF 中的 Qt 图像具有缩放伪像

请注意,我放大得太厉害了,您甚至看不到预览中的形状。渐变还是很完美的。

我不是 PDF 专家,但 QPainter 可能对图像使用光栅,对图元使用矢量:https://en.wikipedia.org/wiki/PDF#Imaging_model。

大佬总结

以上是大佬教程为你收集整理的PDF 中的 Qt 图像具有缩放伪像全部内容,希望文章能够帮你解决PDF 中的 Qt 图像具有缩放伪像所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:中的