Извините за основной вопрос, я только начинаю использовать 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. В чем разница между dots
а также pixels
?
2. Работает ли QImage только с int
пиксели? Не могу ли я прочитать субпиксельные данные для большей точности?
Чтобы прояснить мой вопрос, Ниже приведено увеличенное растровое изображение диагональной линии, и я хочу прочитать все маленькие пиксели / точки в этой строке. Это возможно?
Что касается «точек на метр», вы, вероятно, слышали о «точках на дюйм» (или DPI). Это то же самое. Например, если у вас 20-дюймовый монитор с горизонтальным разрешением X пикселей, у вас будет Y «точек на дюйм» (или пикселей на дюйм). Если вы затем переключитесь на 40-дюймовый монитор, но с тем же горизонтальным разрешением X, то у вас есть половина число точек на дюйм, так как экран теперь в два раза шире. Таким образом, DPI (или PPI) можно увидеть как измерение размера пикселей.
И нет, я серьезно сомневаюсь, что QImage
есть поддержка субпиксельных данных.
Других решений пока нет …