How to display a picture
-
wrote on 2 Oct 2016, 09:49 last edited by
So if i understand, i use QImage for doing whatever i want with this image.
And i use Qpixmax just for display in a label ?(sorry for my english im not bilingual)
-
wrote on 2 Oct 2016, 10:00 last edited by
So if i want to calculate the size of my picture i use :
QSize QImage::size() const
The question is : how to use it ? there is no example
-
So if i want to calculate the size of my picture i use :
QSize QImage::size() const
The question is : how to use it ? there is no example
Lifetime Qt Championwrote on 2 Oct 2016, 10:21 last edited by mrjj 10 Feb 2016, 10:23@Payx said in How to display a picture:
QImage::size()
It returns a
http://doc.qt.io/qt-5/qsize.html
and you can ask it height / width etc
http://doc.qt.io/qt-5/qsize.html#heightconst QSize MySize = theImage->size();
int h=MySize.height();
etc.
Update:
@wieland already showed ;) -
wrote on 2 Oct 2016, 10:40 last edited by
Thanks but how to return it ?
""ui->label_3->setText( QString("Size: %1, %2").arg(s.width()).arg(s.height()) );""
there is not more simple ?
-
Thanks but how to return it ?
""ui->label_3->setText( QString("Size: %1, %2").arg(s.width()).arg(s.height()) );""
there is not more simple ?
@Payx
Well You need to convert to text anyway so it will becomeui->label_3->setText( "Size: " + QString::number(s.width()) +" "+ QString::number(s.width()) );
Not sure its better.
- Thanks but how to return it ?
What we do there is to convert to text and set that text in some label.
That is not really returning it.
returning it would be something like
QSize SomeFunc() {
return pm.size();
} - Thanks but how to return it ?
-
wrote on 2 Oct 2016, 11:09 last edited by
Thanks it works. I prefer : ui->label_3->setText( "Size: " + QString::number(s.width()) +" "+ QString::number(s.height()) );
because i understand all.Then if i want to use height and width for other calcul i can use :
s.width() * 5 ?If i want to cut my picture in many square or rectangle i have to do :
int h = s.width() and work with h thats right ?
-
Thanks it works. I prefer : ui->label_3->setText( "Size: " + QString::number(s.width()) +" "+ QString::number(s.height()) );
because i understand all.Then if i want to use height and width for other calcul i can use :
s.width() * 5 ?If i want to cut my picture in many square or rectangle i have to do :
int h = s.width() and work with h thats right ?
- int h = s.width() and work with h thats right ?
Yes that's a copy of the current width. ( so w is better name ;)
but its makes the calculation easier to read than using s.width() directly.
Note to actually cut the image, you can use
http://doc.qt.io/qt-5/qimage.html#copy - int h = s.width() and work with h thats right ?
-
wrote on 2 Oct 2016, 15:23 last edited by
Okay !
but : QImage QImage::copy(const QRect &rectangle = QRect()) const
with this code we can work only in one rectangle no ?for example i thought cut my picture in pixels 4*4 and have a new image with resolution / 4 :
i have to use a code like this :
for (i=0,i<s.width()+1,i=i+4)
for (j=0,j<s.height()+1,j=j+4)end
end
-
Okay !
but : QImage QImage::copy(const QRect &rectangle = QRect()) const
with this code we can work only in one rectangle no ?for example i thought cut my picture in pixels 4*4 and have a new image with resolution / 4 :
i have to use a code like this :
for (i=0,i<s.width()+1,i=i+4)
for (j=0,j<s.height()+1,j=j+4)end
end
int step=4; for (i=0,i<s.width()+1,i=i+step) for (j=0,j<s.height()+1,j=j+step) just use QImage QImage::copy(int x, int y, int width, int height) const
This will generate small images of each 4x4
-
I put this "file:///C:/Users/David/Documents/addddd/r.jpg"
Yes i added a Qlabel with the .ui and named label (dont worry i changed the name in my code)
wrote on 2 Oct 2016, 16:43 last edited by@Payx said in How to display a picture:
I put this "file:///C:/Users/David/Documents/addddd/r.jpg"
Yes i added a Qlabel with the .ui and named label (dont worry i changed the name in my code)
A small info, u can also place image in resource file of the project , so no need to worry about absolute path.
-
int step=4; for (i=0,i<s.width()+1,i=i+step) for (j=0,j<s.height()+1,j=j+step) just use QImage QImage::copy(int x, int y, int width, int height) const
This will generate small images of each 4x4
wrote on 6 Oct 2016, 13:01 last edited by@mrjj said in How to display a picture:
int step=4; for (i=0,i<s.width()+1,i=i+step) for (j=0,j<s.height()+1,j=j+step) just use QImage QImage::copy(int x, int y, int width, int height) const
This will generate small images of each 4x4
Okay i will test that.
I got an other question, with that code : "QImage img("C:/path/filename.jpg");" i have to put the destination of the file (sorry for my english)
but if i want to create a file explorer (for example in facebook we can change a picture with a file explorer and choose what picture i want)
what can i do ? -
Lifetime Qt Championwrote on 6 Oct 2016, 13:42 last edited by mrjj 10 Jun 2016, 13:43
- but if i want to create a file explorer (for example in facebook we can change a picture with a file explorer and choose what picture i want)
Im not 100% sure what you ask, but I give a guess:
Instead of using a fixed path in the program you can use
http://doc.qt.io/qt-5/qfiledialog.html
to let user browser and select an image.Like in this example
http://doc.qt.io/qt-5/qtwidgets-widgets-imageviewer-example.htmlso
QImage img("C:/path/filename.jpg"
becomesQString imagefile = QFileDialog::getOpenFileNames(this, tr("Files"), QDir::currentPath(), tr("*.jpg *.png"));
QImage img(imagefile);Hope that is what you asked about.
-
wrote on 6 Oct 2016, 13:50 last edited by
I found what i sought :
QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open Image"),"/path",tr("Image Files (*.jpg)"));
But i got all files, and i just want .jpg for now """"""tr("Image Files (*.jpg)"));"""""""""" dont work ?
then i want to put my picture file in a label, but i can't find how to convert a QStringList to a Qimage or Qpixmap
-
I found what i sought :
QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open Image"),"/path",tr("Image Files (*.jpg)"));
But i got all files, and i just want .jpg for now """"""tr("Image Files (*.jpg)"));"""""""""" dont work ?
then i want to put my picture file in a label, but i can't find how to convert a QStringList to a Qimage or Qpixmap
Lifetime Qt Championwrote on 6 Oct 2016, 14:07 last edited by mrjj 10 Jun 2016, 14:23@Payx
it should work with *.jpg.- but i can't find how to convert a QStringList to a Qimage or Qpixmap
Oh just use
fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/", tr("Image Files (*.png *.jpg *.bmp)"));It only returns the 1 filename. ( NOTE THE MISSING s)
ui->mylabel->setPixmap( new QPixmap(fileName ));
-
wrote on 6 Oct 2016, 14:16 last edited by
I got one error : Expected one specifier before pixmap
-
Lifetime Qt Championwrote on 6 Oct 2016, 14:22 last edited by mrjj 10 Jun 2016, 21:00
@Payx
the class is QPixmap
so its "new QPixmap"setPixmap( new QPixmap(fileName ));Sorry, was just fast code.
-
wrote on 6 Oct 2016, 14:38 last edited by
Yes i tried too before post but i had one error too, so i post the first error.
The second is :
No matching function for call to 'Qlabel::setPixmap(QPixmap*)" -
Yes i tried too before post but i had one error too, so i post the first error.
The second is :
No matching function for call to 'Qlabel::setPixmap(QPixmap*)"Lifetime Qt Championwrote on 6 Oct 2016, 20:59 last edited by mrjj 10 Jun 2016, 21:02@Payx
Sorry not enough coffee :)QPixmap pix(fileName );
setPixmap(pix); -
wrote on 7 Oct 2016, 08:37 last edited by Pradeep Kumar 10 Jul 2016, 08:38
If u are using QImage
m_imageLabel = new QLabel; QImage imagePixmap; imagePixmap.load(":/new/prefix1/Images/imageName.extension"); m_imageLabel->setPixmap(QPixmap::fromImage(imagePixmap));
Or
Only QPixmap
m_imageLabel = new QLabel; QPixmap imagePixmap; imagePixmap.load(":/new/prefix1/Images/imageName.extension"); m_imageLabel->setPixmap(imagePixmap);
imageName.extension can be image.png, image.jpeg.
-
If u are using QImage
m_imageLabel = new QLabel; QImage imagePixmap; imagePixmap.load(":/new/prefix1/Images/imageName.extension"); m_imageLabel->setPixmap(QPixmap::fromImage(imagePixmap));
Or
Only QPixmap
m_imageLabel = new QLabel; QPixmap imagePixmap; imagePixmap.load(":/new/prefix1/Images/imageName.extension"); m_imageLabel->setPixmap(imagePixmap);
imageName.extension can be image.png, image.jpeg.
wrote on 7 Oct 2016, 08:55 last edited by@Pradeep-Kumar said in How to display a picture:
If u are using QImage
m_imageLabel = new QLabel; QImage imagePixmap; imagePixmap.load(":/new/prefix1/Images/imageName.extension"); m_imageLabel->setPixmap(QPixmap::fromImage(imagePixmap));
Or
Only QPixmap
m_imageLabel = new QLabel; QPixmap imagePixmap; imagePixmap.load(":/new/prefix1/Images/imageName.extension"); m_imageLabel->setPixmap(imagePixmap);
imageName.extension can be image.png, image.jpeg.
U didnt read the thread i think :-).
But thx@mrjj Lol no problem :-)
Thanks it works i will create an other thread for an other question after
24/43