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,9 @@
   
     # 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 +1462,8 @@
     }
   
     # 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,12 @@
     # 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
+		my $xoffset = $xi * $Pixels;
+		$SubImage->Crop(width=>$Pixels,height=>$Pixels,x=>$xoffset,y=>0);
 
+       
         # Decide what the tile should be called
         my $Filename = tileFilename($layer, $X * $Size + $xi, $Ytile, $Z);
         MagicMkdir($Filename) if ($Config{"LocalSlippymap"});
@@ -1471,12 +1479,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)) 
+		##Test code block for comparing
+		$BlackTileImage->Scale(width=>256, height=>256);
+		my $w = $SubImage->Compare(image=>$BlackTileImage);       # compare
+		die "$w" if $w;
+		printf "Errors is %f\n",     $SubImage->Get('error');
+		printf "Mean Error is %f\n", $SubImage->Get('mean-error'); 
+		
+		
+		# TODO: not working atm with perlmagick
+		# Check for black tile output
+		
+        if ($SubImage->Compare(image=>$BlackTileImage)) 
         {
             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 +1501,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 ($SubImage->Compare(image=>$EmptyLandImage)) # 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
         {
             copy("emptyland.png", $Filename);
         }
-        elsif (not($SubImage->compare($EmptySeaImage) & GD_CMP_IMAGE)) # same for Sea tiles
+        elsif ($SubImage->Compare(image=>$EmptySeaImage)) # 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 +1517,11 @@
     
             if ($Config{"Layer.$layer.Transparent"}) 
             {
-                $SubImage->transparent($SubImage->colorAllocate(248,248,248));
+                $SubImage->Transparent(color=>'rgb(248,248,248)');
             }
             else 
             {
-                $SubImage->transparent(-1);
+                $SubImage->Transparent(-1);
             }
 
             # convert Tile to paletted file This *will* break stuff if different libGD versions are used
@@ -1555,13 +1573,13 @@
     my ($Image, $Filename) = @_;
     
     # Get the image as PNG data
-    my $png_data = $Image->png;
+    #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;
+    #open (my $fp, ">$Filename") || cleanUpAndDie("WriteImage:could not open file for writing, exiting","EXIT",3,$PID);
+    #binmode $fp;
+    $Image->Write(filename=>$Filename);
+    #close $fp; 
 }
 
 # sub MagicMkdir moved to tahlib.pm
