Results 1 to 8 of 8

Thread: save Qimage in a file

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Mar 2009
    Location
    Brisbane, Australia
    Posts
    7,729
    Thanks
    13
    Thanked 1,610 Times in 1,537 Posts
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Wiki edits
    17

    Default Re: save Qimage in a file

    The original code tries to write an inherently binary format, through a QTextStream, to a file named "out.png" and expects it not to get mangled. This is broken is several ways.

    You want to write using the QIODevice::write() or writeData() function and a QByteArray containing the original PNG data.

    Edit: I re-read the original post and changed the post entirely

  2. #2
    Join Date
    Sep 2009
    Location
    UK
    Posts
    2,447
    Thanks
    6
    Thanked 348 Times in 333 Posts
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: save Qimage in a file

    I thought that but disregarded it when I read "but l can open the saved image on the disk with Infrview and other picture viewer", so obviously the picture get saved unmangled.

    Unless of course I read the original post completely wrong.

  3. #3
    Join Date
    Mar 2009
    Location
    Brisbane, Australia
    Posts
    7,729
    Thanks
    13
    Thanked 1,610 Times in 1,537 Posts
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Wiki edits
    17

    Default Re: save Qimage in a file

    Fragile at best:
    Qt Code:
    1. #include <QtGui>
    2. #include <QDebug>
    3.  
    4. int main(int argc, char *argv[])
    5. {
    6. QApplication app(argc, argv);
    7.  
    8. QFile in("tawny.png");
    9. if (in.open(QIODevice::ReadOnly)) {
    10. QByteArray ba = in.readAll();
    11. in.close();
    12.  
    13. QFile out("tawny_out.png");
    14. if (out.open(QIODevice::WriteOnly)) {
    15. QTextStream s(&out);
    16. s << ba;
    17. out.close();
    18. }
    19. }
    20.  
    21.  
    22. return app.exec();
    23. }
    To copy to clipboard, switch view to plain text mode 
    With this image in:
    tawny.jpg
    (I cannot upload the output file: the forum thinks it isn't valid)
    It has produced a broken header in the output:
    Qt Code:
    1. chrisw@newton /tmp/simple_example $ file *.png
    2. tawny_out.png: data
    3. tawny.png: PNG image data, 612 x 816, 8-bit/color RGB, non-interlaced
    4.  
    5. chrisw@newton /tmp/simple_example $ identify tawny*.png
    6. tawny.png PNG 612x816 612x816+0+0 8-bit DirectClass 750KBB 0.000u 0:00.010
    7. identify: improper image header `tawny_out.png' @ error/png.c/ReadPNGImage/2842.
    To copy to clipboard, switch view to plain text mode 
    The file is broken at the very first byte of the 8-byte header by UTF-8 encoding of that byte:
    Qt Code:
    1. chrisw@newton /tmp/simple_example $ od -tx1 -tc -N 8 tawny.png
    2. 0000000 89 50 4e 47 0d 0a 1a 0a
    3. 211 P N G \r \n 032 \n
    4. 0000010
    5. chrisw@newton /tmp/simple_example $ od -tx1 -tc -N 8 tawny_out.png
    6. 0000000 c2 89 50 4e 47 0d 0a 1a
    7. 302 211 P N G \r \n 032
    8. 0000010
    To copy to clipboard, switch view to plain text mode 

Similar Threads

  1. QImage->save(); returns 0
    By ramzes13 in forum Newbie
    Replies: 2
    Last Post: 22nd September 2010, 14:49
  2. Qimage::save returns false in release
    By CCTeam in forum Qt Programming
    Replies: 5
    Last Post: 26th May 2010, 17:35
  3. Can't save QImage
    By hvengel in forum Qt Programming
    Replies: 6
    Last Post: 14th June 2008, 21:07
  4. QImage : trouble with save() method
    By krivenok in forum Qt Programming
    Replies: 12
    Last Post: 3rd May 2006, 20:55
  5. Replies: 3
    Last Post: 15th March 2006, 11:44

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.