QImage精确读取像素数据

时间:2013-11-08 06:45:32

标签: c++ qt pixels qimage

对于基本问题,我很抱歉,我刚开始使用QImage从图像文件中读取像素数据。

为了理解成员函数,我尝试加载图像文件并尝试输出函数返回值:

QString fileName = "pic1.bmp";
QImage myImage;
myImage.load( fileName );

std::cout << "width = "         << myImage.width() << std::endl;
std::cout << "height = "        << myImage.height() << std::endl;
std::cout << "dotspermeterX = " << myImage.dotsPerMeterX() << std::endl;
std::cout << "dotspermeterY = " << myImage.dotsPerMeterY() << std::endl;
QRectF myRect = myImage.rect();
std::cout << "rect = " << myRect.bottomLeft().x() << "," << myRect.bottomLeft().y()
      << "  " << myRect.topRight().x() << "," << myRect.topRight().y() << std::endl;

我得到的输出是:

width = 858
height = 608
dotspermeterX = 4724
dotspermeterY = 4724
rect = 0,608  858,0

我的问题是:
1. dotspixels之间的区别是什么? 2. QImage仅适用于int像素吗?我不能读取子像素数据以获得更好的精度吗?

为了澄清我的问题,以下是对角线的缩放位图图像,我想读取该行中的所有小像素/点。这可能吗?
enter image description here

1 个答案:

答案 0 :(得分:2)

至于“每米点数”,您可能听说过“每英寸点数”(或DPI)。一样的。例如,如果你有一个水平分辨率为X像素的20英寸显示器,你将获得Y“每英寸点数”(或每英寸像素数)。如果您切换到40英寸显示器但具有相同的水平分辨率X,那么您有一半 DPI的数量,因为屏幕现在是两倍宽。因此DPI(或PPI)可以作为像素大小的测量值。

不,我非常怀疑QImage是否支持子像素数据。