@@ -20,6 +20,8 @@ email : sherman at mrcc.com
20
20
#include < QtGlobal>
21
21
#include < QApplication>
22
22
#include < QCursor>
23
+ #include < QDir>
24
+ #include < QFile>
23
25
#include < QGraphicsItem>
24
26
#include < QGraphicsScene>
25
27
#include < QGraphicsView>
@@ -32,6 +34,7 @@ email : sherman at mrcc.com
32
34
#include < QResizeEvent>
33
35
#include < QString>
34
36
#include < QStringList>
37
+ #include < QTextStream>
35
38
#include < QWheelEvent>
36
39
37
40
#include " qgis.h"
@@ -412,6 +415,31 @@ void QgsMapCanvas::saveAsImage( QString theFileName, QPixmap * theQPixmap, QStri
412
415
{
413
416
mMap ->pixmap ().save ( theFileName, theFormat.toLocal8Bit ().data () );
414
417
}
418
+ // create a world file to go with the image...
419
+ QgsRectangle myRect = mMapRenderer ->extent ();
420
+ QString myHeader;
421
+ // Pixel XDim
422
+ myHeader += QString::number ( mapUnitsPerPixel () ) + " \r\n " ;
423
+ // Rotation on y axis - hard coded
424
+ myHeader += " 0 \r\n " ;
425
+ // Rotation on x axis - hard coded
426
+ myHeader += " 0 \r\n " ;
427
+ // Pixel YDim - almost always negative - see
428
+ // http://en.wikipedia.org/wiki/World_file#cite_note-2
429
+ myHeader += " -" + QString::number ( mapUnitsPerPixel () ) + " \r\n " ;
430
+ // Origin X (top left corner)
431
+ myHeader += QString::number ( myRect.xMinimum () ) + " \r\n " ;
432
+ // Origin Y (top left corner)
433
+ myHeader += QString::number ( myRect.yMaximum () ) + " \r\n " ;
434
+ QFileInfo myInfo = QFileInfo ( theFileName );
435
+ QString myWorldFileName = myInfo.absolutePath () + QDir::separator () + myInfo.baseName () + " ." + theFormat + " w" ;
436
+ QFile myWorldFile ( myWorldFileName );
437
+ if ( !myWorldFile.open ( QIODevice::WriteOnly | QIODevice::Text ) )
438
+ {
439
+ return ;
440
+ }
441
+ QTextStream myStream ( &myWorldFile );
442
+ myStream << myHeader;
415
443
} // saveAsImage
416
444
417
445
0 commit comments