Unable to view image of SVG format in Android
-
Hi,
I am using Android device to view the sample Apps, which is developed in Qt , version 5.7.
I am able to view image of .png and .jpeg format , but unable to view .svg format. And i am adding the image of respective format to QLabel.And the image of svg format is not displaying.
sample code :
QFile file("./jpegFormat.svg"); // instead i give ./jpegFormat.jpeg or ./jpegFormat.png it will work
file.setPermissions(QFileDevice::ReadOwner | QFileDevice::WriteOwner);
file.open(QFile::ReadWrite);
file.write(responseData);
file.close();QPixmap pixmap("./jpegFormat.svg"); // instead i give ./jpegFormat.jpeg or ./jpegFormat.png it will work m_imageLabel->setPixmap(pixmap);
Guidance is required.
Thanks, -
Hi
Do you haveQT += svg
http://doc.qt.io/qt-5/qtsvg-index.html
Also , you can try the example
http://doc.qt.io/qt-5/qtsvg-svgviewer-example.html -
Hi! You cannot directly construct a pixmap from an SVG file. If you just want to show the SVG (as with
QLabel
for pixel graphics) use aQSvgWidget
. If you want to rasterize the SVG by yourself then useQSvgRenderer
to render the SVG viaQPainter
into aQImage
orQPixmap
. -
Thanks for the solution guys @mrjj @Wieland
It worked.Here is the sample code.
QFile file("./svgFormat.svg"); file.open(QFile::ReadWrite); file.write(responseData); file.close(); QSvgRenderer renderer(QString("./svgFormat.svg")); QImage image(500, 200, QImage::Format_ARGB32); image.fill(0xaaA08080); QPainter painter(&image); renderer.render(&painter); image.save("./svgFormat.png"); QPixmap pixmap("./svgFormat.png"); m_imageLabel->setPixmap(pixmap);
I am saving in .png format after that i am again reading the saved .png format and adding to QLabel.
-
@Pradeep-Kumar Great to hear that it works now. Please mark the thread as solved :)
-
Yup i will mark as solved, so it will be useful.
Thanks & Cheers. -
If we want to save in .svg format
here is the below code, this also works fine
QByteArray responseData = response->readAll(); QFile file("./svgFormat.svg"); file.open(QFile::ReadWrite); file.write(responseData); file.close(); QPixmap pixmap("./svgFormat.svg"); m_imageLabel->setPixmap(pixmap);
Another one which i posted earlier .
QFile file("./svgFormat.svg");
file.open(QFile::ReadWrite);
file.write(responseData);
file.close();QSvgRenderer renderer(QString("./svgFormat.svg"));
QImage image(500, 200, QImage::Format_ARGB32);
image.fill(0xaaA08080);QPainter painter(&image);
renderer.render(&painter);image.save("./svgFormat.png");
QPixmap pixmap("./svgFormat.png");
m_imageLabel->setPixmap(pixmap);I am saving in .png format after that i am again reading the saved .png format and adding to QLabel. Both the code works.
-
I just posted because i was again working on the same app. I made changes and observed the code which posted previous also was working.
So taught of posting once again , so it will be nice to share the contents.
As @mrjj said we need to include Qt += svg in pro file.