我有一个4通道PNG图像与8x8像素由QImage
加载。 QImage
然后按比例缩放200倍,因此图像将具有1600x1600的新分辨率,每个原始像素的尺寸为200x200。但是,当通过QPixmap
将此图像添加到QLabel
并显示在屏幕上时,绘制的像素将具有略微不同的尺寸。如何在绘制缩放QImage时确保像素大小均匀?
我使用Gimp
拍摄了屏幕截图,并更仔细地查看了绘制的图像。看起来,每个其他像素都比它应该稍大,例如201而不是200像素。然后,连续最后一个像素将会更小以进行补偿,以便整个图像最终具有正确的大小。
这不会发生对所有的缩放因子,100是精细例如等等都是因素是2的幂,诸如256
我的原始的方法是使用QGraphicsView
和在这种情况下,QGraphicsPixmapItem
我缩放了GraphicsItem而不是图像。效果是一样的。
我在这里看到了什么效果?如果有的话,可以做些什么呢?
重现此问题的代码是非常简单的
int scale = 200;
image = QImage("some image file");
QPixmap pixmap = QPixmap::fromImage(image.scaled(image.size() * scale));
some_label->setPixmap(pixmap);
我不确定这是否解决了您的问题,但是您可以在绘制(未缩放的)像素图时自行缩放,如下所示:https://github.com/gerbilvis/gerbil/blob/master/gui/ widgets/scaledview.cpp#L103缩放发生在这里:QTransform设置在这里:https://github.com/gerbilvis/gerbil/blob/master/gui/widgets/scaledview.cpp#L72(你的QTransform更容易设置与固定的规模和翻译)Btw。这是GL渲染后端非常有效的方法。 – ypnos
谢谢。我从来没有猜到这个问题可能来自缩放算法。我认为这只是一个绘画/演示问题。但我只是将缩放后的图像保存到磁盘上,果然,这也是错误的。谢谢你的提示 :) – ifschleife