Index: C:/Users/Tino/workspace/Tilesathome/tilesGen.pl
===================================================================
--- C:/Users/Tino/workspace/Tilesathome/tilesGen.pl	(revision 6041)
+++ C:/Users/Tino/workspace/Tilesathome/tilesGen.pl	(working copy)
@@ -10,6 +10,8 @@
 use English '-no_match_vars';
 use GD qw(:DEFAULT :cmp); 
 use strict;
+use Image::Magick;
+
 #-----------------------------------------------------------------------------
 # OpenStreetMap tiles@home
 #
@@ -62,19 +64,25 @@
 # palette is chosen differently for different tiles.
 
 # create a comparison blank image
-my $EmptyLandImage = new GD::Image(256,256);
-my $MapLandBackground = $EmptyLandImage->colorAllocate(248,248,248);
-$EmptyLandImage->fill(127,127,$MapLandBackground);
+my $EmptyLandImage = Image::Magick->new(size=>'256x256');
+$EmptyLandImage->ReadImage('xc:white');
+$EmptyLandImage->Colorize(fill=>'rgb(248,248,248)');
+
+
+#my $EmptySeaImage = new GD::Image(256,256);
+my $EmptySeaImage = Image::Magick->new(size=>'256x256');
+$EmptySeaImage->ReadImage('xc:white');
+$EmptySeaImage->Colorize(fill=>'rgb(181,214,241)');
 
-my $EmptySeaImage = new GD::Image(256,256);
-my $MapSeaBackground = $EmptySeaImage->colorAllocate(181,214,241);
-$EmptySeaImage->fill(127,127,$MapSeaBackground);
+
 
 # Some broken versions of Inkscape occasionally produce totally black
 # output. We detect this case and throw an error when that happens.
-my $BlackTileImage = new GD::Image(256,256);
-my $BlackTileBackground = $BlackTileImage->colorAllocate(0,0,0);
-$BlackTileImage->fill(127,127,$BlackTileBackground);
+my $BlackTileImage = Image::Magick->new(size=>'256x256');
+$BlackTileImage->ReadImage('xc:white');
+$BlackTileImage->Colorize(fill=>'rgb(0,0,0)');
+
+
 
 # set the progress indicator variables
 my $currentSubTask;
@@ -1443,7 +1451,10 @@
   
     # Load the tileset image
     statusMessage(sprintf("Splitting %s (%d x 1)", $File, $Size), $Config{Verbose}, $currentSubTask, $progressJobs, $progressPercent, 0);
-    my $Image = newFromPng GD::Image($File);
+    my $Image=Image::Magick->new;
+    $Image->Read($File);
+    
+		
     if( not defined $Image )
     {
         print STDERR "\nERROR: Failed to read in file $File\n";
@@ -1452,7 +1463,7 @@
     }
   
     # Use one subimage for everything, and keep copying data into it
-    my $SubImage = new GD::Image($Pixels,$Pixels);
+    my $SubImage = Image::Magick->new(size=>'256x256');
   
     # For each subimage
     for(my $xi = 0; $xi < $Size; $xi++)
@@ -1457,15 +1468,11 @@
     # For each subimage
     for(my $xi = 0; $xi < $Size; $xi++)
     {
+    	$SubImage= $Image->Clone();
         # Get a tiles'worth of data from the main image
-        $SubImage->copy($Image,
-          0,                   # Dest X offset
-          0,                   # Dest Y offset
-          $xi * $Pixels,       # Source X offset
-          0,                   # Source Y offset # always 0 because we only cut from one row
-          $Pixels,             # Copy width
-          $Pixels);            # Copy height
-
+		$SubImage->Crop(width=>$Pixels,height=>$Pixels,x=>$xi*$Pixels,y=>0);
+		$SubImage->Set( matte=>'False' );
+       
         # Decide what the tile should be called
         my $Filename = tileFilename($layer, $X * $Size + $xi, $Ytile, $Z);
         MagicMkdir($Filename) if ($Config{"LocalSlippymap"});
@@ -1471,12 +1478,22 @@
         MagicMkdir($Filename) if ($Config{"LocalSlippymap"});
    
         # Temporary filename
-        my $Filename2 = "$Filename.cut";
+        my $Filename2 = "$Filename.cut.png";
         my $Basename = $Filename;   # used for statusMessage()
         $Basename =~ s|.*/||;
 
-        # Check for black tile output
-        if (not ($SubImage->compare($BlackTileImage) & GD_CMP_IMAGE)) 
+		#Compare cut tile to reference tiles
+		$SubImage->Compare(image=>$EmptySeaImage); 
+		my $comparesea = $SubImage->Get('error');
+		$SubImage->Compare(image=>$EmptyLandImage);
+		my $compareland = $SubImage->Get('error');
+		$SubImage->Compare(image=>$BlackTileImage);
+		my $compareblack = $SubImage->Get('error');
+		
+	
+		
+		# Check for black tile output
+		if ($compareblack == 0) 
         {
             print STDERR "\nERROR: Your inkscape has just produced a totally black tile. This usually indicates a broken Inkscape, please upgrade.\n";
             PutRequestBackToServer($X,$Y,$ZOrig,"BlackTile");
@@ -1483,11 +1500,11 @@
             cleanUpAndDie("SplitImageX:BlackTile encountered, exiting","EXIT",4,$PID);
         }
         # Detect empty tile here:
-        elsif (not($SubImage->compare($EmptyLandImage) & GD_CMP_IMAGE)) # libGD comparison returns true if images are different. (i.e. non-empty Land tile) so return the opposite (false) if the tile doesn''t look like an empty land tile
+        elsif ($compareland == 0)
         {
             copy("emptyland.png", $Filename);
         }
-        elsif (not($SubImage->compare($EmptySeaImage) & GD_CMP_IMAGE)) # same for Sea tiles
+        elsif ($comparesea == 0) # same for Sea tiles
         {
             copy("emptysea.png",$Filename);
 #            $allempty = 0; # TODO: enable this line if/when serverside empty tile methods is implemented. Used to make sure we                                     generate all blank seatiles in a tileset.
@@ -1499,11 +1516,8 @@
     
             if ($Config{"Layer.$layer.Transparent"}) 
             {
-                $SubImage->transparent($SubImage->colorAllocate(248,248,248));
-            }
-            else 
-            {
-                $SubImage->transparent(-1);
+                $SubImage->Transparent(color=>'rgb(248,248,248)');
+                $SubImage->Set( matte=>'True' );
             }
 
             # convert Tile to paletted file This *will* break stuff if different libGD versions are used
@@ -1554,14 +1568,7 @@
 {
     my ($Image, $Filename) = @_;
     
-    # Get the image as PNG data
-    my $png_data = $Image->png;
-    
-    # Store it
-    open (my $fp, ">$Filename") || cleanUpAndDie("WriteImage:could not open file for writing, exiting","EXIT",3,$PID);
-    binmode $fp;
-    print $fp $png_data;
-    close $fp;
+    $Image->Write(filename=>$Filename);
 }
 
 # sub MagicMkdir moved to tahlib.pm
