I am creating multiple partial images from a single image to use for a map overlay. The issue I am having is that the first image is created successfully, but the rest are black. I suspect that the imagecreatefrompng is the culprit and it is not able to run multiple times with out clearing it and so my images are black because the image is nil. Please help me find a suitable solution to my code below. Thanks in advance.
Everything in my code works, except the image creation. As I said before it creates the image successfully once. The output of my loop says everything that it should say.
for($x = 0; $x <= $loop; $x++)
{
//Check for direcotory for X
$x_directory = 'generated_images/' . $dbn . '/' . $zoom . '/' . $x;
if (!file_exists($x_directory))
{
mkdir($x_directory, 0777, true);
}//end if
//Set Starting Y Copy Values
$startY = 0;
$endY = 1;
for($y = 0; $y <= $loop; $y++)
{
//Do not need to check for Y images, we will replace any exsisting images
//Set a time limit for each Y image
set_time_limit(15);
$time = time();
$src_image = imagecreatefrompng('generated_images/pre'. $dbn .'.png') or die('Problem with source');
$y_image = imagecreatetruecolor($image_w,$image_h) or die('Problem In Creating image');
if(($x >= 2 && $x <= 5) && ($y >= 5 && $y <= 6)) {
?>
<p>
Start X: <?=$startX?> <br/>
Start Y: <?=$startY?> <br/>
End X: <?=$endX?> <br/>
End Y: <?=$endY?> <br/>
<?
//imagecopyresized($y_image, $src_image, 0, 0, $startX, $startY, $image_w, $image_h, 1024, 1024);
//Set the blending mode for an image
imagealphablending($y_image, false);
imagesavealpha($y_image, true);
// scan image pixels
for ($pix_y = ($startY * $multiplier); $pix_y < ($endY * $multiplier) ; $pix_y++) {
for ($pix_x = ($startX *$multiplier); $pix_x < ($endX * $multiplier) ; $pix_x++) {
$out_pix = imagecolorat($src_image,$pix_x,$pix_y);
$colors = imagecolorsforindex($y_image, $out_pix);
//$src_pix_array = rgb_to_array($src_pix);
if($colors['red'] == 0 && $colors['green'] == 0 && $colors['blue'] == 0) $alpha = 127;
else $alpha = 80;
imagesetpixel($y_image, $pix_x, $pix_y, imagecolorallocatealpha($y_image, $colors['red'], $colors['green'], $colors['blue'], $alpha));
}//end for
}//end for
$startY++;
$endY++;
imagepng($y_image,$x_directory . '/' . $y . '.png') or die('Problem saving image: ' . $x_directory . '/' . $y . '.png');
imagedestroy($y_image);
//imagedestroy($src_image);
}//end if
else
{
$black = imagecolorallocate($y_image, 0, 0, 0);
// Make the background transparent
imagecolortransparent($y_image, $black);
imagepng($y_image,$x_directory . '/' . $y . '.png') or die('Problem saving image: ' . $x_directory . '/' . $y . '.png');
imagedestroy($y_image);
}
$time = time() - $time;
?>
Image <?=$x?>,<?=$y?> time: <?=$time?> Seconds <br/>
<?
}
//end for y
if(($x >= 2 && $x <= 5)) {
$startX++;
$endX++;
}
}//end for x