<?php
	/*
		PHP Imaginer v1
		Tommy, tommyrgn@gmail.com
		http://rockstargaming.nl/
	*/
	
	
	
	/* Instellingen */
	$_OPTIONS['output_dir'] = 'thumbs/';
		/*
			De standaard output map. Map hoeft niet te bestaan. NULL voor geen opslag op HDD.
		*/
	$_OPTIONS['image_dir'] = 'images/';
		/*
			De standaard image map. NULL voor geen standaard map. Met een '/' er achter.
		*/
	$_OPTIONS['quality'] = 100;
		/*
			Kwaliteit van jpeg image.
		*/
	
	
	
	
	// Thumbnail functie, use: thumb(image, [width], [height]);
	/*
		image:
			- vereisd
			- PNG, GIF of JPG
		width & height:
			- optioneel, één van beide kan ook weg gelaten worden
			- integer
	*/
	function thumb($image, $width=false, $height=false, $output, $_OPTIONS) {
		if (!empty($image) && !$width || !$height) {
			if ($_OPTIONS['image_dir'] != NULL) {
				$image = $_OPTIONS['image_dir'] . $image;
			}
			
			// Afmetingen orginele afbeelding ophalen
			$image_size = getimagesize($image);
			
			// Nieuwe afmetingen bepalen
			if (isset($width) && isset($height)) {
				$thumb_width = $width;
				$thumb_height = $height;
			} elseif (isset($width) && !isset($height)) {
				$thumb_width = $width;
				
				if ($width < $width) {
					$thumb_width = $image_size[0];
					$thumb_height = $image_size[1];
				} elseif ($width >= $width) {
					$a = $width / $image_size[0];
					$thumb_height = $image_size[1] * $a;
				}
			} elseif (!isset($width) && isset($height)) {
				$thumb_height = $height;
				
				if ($image_size[1] < $height) {
					$thumb_width = $image_size[0];
					$thumb_height = $image_size[1];
				} elseif ($image_size[1] >= $height) {
					$a = $height / $image_size[1];
					$thumb_width = $image_size[0] * $a;
				}
			}
			
			// Mime-type ophalen
			if ($image_size['mime'] == 'image/jpeg') {
				$extention = 'jpeg';
			} elseif ($image_size['mime'] == 'image/gif') {
				$extention = 'gif';
			} elseif ($image_size['mime'] == 'image/png') {
				$extention = 'png';
			}
			
			header("Content-type: " . $image_size['mime']);
			
			if ($extention == 'jpeg') {
				$i = imagecreatefromjpeg($image);
			} elseif ($extention == 'gif') {
				$i = imagecreatefromgif($image);
			} elseif ($extention == 'png') {
				$i = imagecreatefrompng($image);
			}
			
			$new_image = imagecreatetruecolor($thumb_width, $thumb_height);
			
			imagecopyresampled($new_image, $i, 0, 0, 0, 0, $thumb_width, $thumb_height, $image_size[0], $image_size[1]);
			
			if ($extention == 'jpeg') {
				imagejpeg($new_image, $_OUTPUT['dir'], $_OPTIONS['quality']);
			} elseif ($extention == 'gif') {
				imagegif($new_image, $_OUTPUT['dir']);
			} elseif ($extention == 'png') {
				imagepng($new_image, $_OUTPUT['dir'], 0);
			}
			
			imagedestroy($new_image);
		}
	}
	
	
	
	
	
	function rotate($image, $degrees, $output, $_OPTIONS) {
		if (!empty($image) && !$width || !$height) {
			if ($_OPTIONS['image_dir'] != NULL) {
				$image = $_OPTIONS['image_dir'] . $image;
			}
			
			// Afmetingen orginele afbeelding ophalen
			$image_size = getimagesize($image);
			
			// Mime-type ophalen
			if ($image_size['mime'] == 'image/jpeg') {
				$extention = 'jpeg';
			} elseif ($image_size['mime'] == 'image/gif') {
				$extention = 'gif';
			} elseif ($image_size['mime'] == 'image/png') {
				$extention = 'png';
			}
			
			header("Content-type: " . $image_size['mime']);
			
			if ($extention == 'jpeg') {
				$i = imagecreatefromjpeg($image);
			} elseif ($extention == 'gif') {
				$i = imagecreatefromgif($image);
			} elseif ($extention == 'png') {
				$i = imagecreatefrompng($image);
			}
			
			$new_image = imagerotate($i, $degrees, -1);
			
			if ($extention == 'jpeg') {
				imagejpeg($new_image, $_OUTPUT['dir'], $_OPTIONS['quality']);
			} elseif ($extention == 'gif') {
				imagegif($new_image, $_OUTPUT['dir']);
			} elseif ($extention == 'png') {
				imagepng($new_image, $_OUTPUT['dir'], 0);
			}
			
			imagedestroy($new_image);
		}
	}
	
	
	
	
	
	
	function scale($image, $precent, $output, $_OPTIONS) {
		if (!empty($image) && !$width || !$height) {
			$image_size = getimagesize($_OPTIONS['image_dir'] . $image);
			
			thumb($image, ($image_size[0] * $precent), NULL, $output, $_OPTIONS);
		}
	}
	
	
	
	function reverse($image, $side='hor', $output, $_OPTIONS) {
		if (!empty($image)) {
			if ($_OPTIONS['image_dir'] != NULL) {
				$image = $_OPTIONS['image_dir'] . $image;
			}
			
			// Afmetingen orginele afbeelding ophalen
			$image_size = getimagesize($image);
				
			// Mime-type ophalen
			if ($image_size['mime'] == 'image/jpeg') {
				$extention = 'jpeg';
			} elseif ($image_size['mime'] == 'image/gif') {
				$extention = 'gif';
			} elseif ($image_size['mime'] == 'image/png') {
				$extention = 'png';
			}
			
			header("Content-type: " . $image_size['mime']);
			
			if ($extention == 'jpeg') {
				$im = imagecreatefromjpeg($image);
			} elseif ($extention == 'gif') {
				$im = imagecreatefromgif($image);
			} elseif ($extention == 'png') {
				$im = imagecreatefrompng($image);
			}
			
			$x = $image_size[0];
			$y = $image_size[1];
			
			$new_image = imagecreatetruecolor($x, $y);
			
			for ($i = 0; $i < $y; $i++) {
				for ($j = 0; $j < $x; $j++) {
					$c = imagecolorat($im, ($x - 1) - $j, $i);
					
					$r = ($c >> 16) & 0xFF;
					$g = ($c >> 8) & 0xFF;
					$b = $c & 0xFF;

					$clr = imagecolorallocate($new_image, $r, $g, $b);
					
					imagesetpixel($new_image, $j, $i, $clr);
				}
			}
			
			if ($extention == 'jpeg') {
				imagejpeg($new_image, $_OUTPUT['dir'], $_OPTIONS['quality']);
			} elseif ($extention == 'gif') {
				imagegif($new_image, $_OUTPUT['dir']);
			} elseif ($extention == 'png') {
				imagepng($new_image, $_OUTPUT['dir'], 0);
			}
			
			imagedestroy($new_image);
		}
	}
	
	
	
	
	function negative($image, $output, $_OPTIONS) {
		if (!empty($image)) {
			if ($_OPTIONS['image_dir'] != NULL) {
				$image = $_OPTIONS['image_dir'] . $image;
			}
			
			// Afmetingen orginele afbeelding ophalen
			$image_size = getimagesize($image);
				
			// Mime-type ophalen
			if ($image_size['mime'] == 'image/jpeg') {
				$extention = 'jpeg';
			} elseif ($image_size['mime'] == 'image/gif') {
				$extention = 'gif';
			} elseif ($image_size['mime'] == 'image/png') {
				$extention = 'png';
			}
			
			header("Content-type: " . $image_size['mime']);
			
			if ($extention == 'jpeg') {
				$im = imagecreatefromjpeg($image);
			} elseif ($extention == 'gif') {
				$im = imagecreatefromgif($image);
			} elseif ($extention == 'png') {
				$im = imagecreatefrompng($image);
			}
			
			$x = $image_size[0];
			$y = $image_size[1];
			
			$new_image = imagecreatetruecolor($x, $y);
			
			for ($i = 0; $i < $y; $i++) {
				for ($j = 0; $j < $x; $j++) {
					$c = imagecolorat($im, $j, $i);
					
					$r = ($c >> 16) & 0xFF;
					$g = ($c >> 8) & 0xFF;
					$b = $c & 0xFF;
					
					$r = abs($r - 255);
					$g = abs($g - 255);
					$b = abs($b - 255);
					
					$clr = imagecolorallocate($new_image, $r, $g, $b);
					
					imagesetpixel($new_image, $j, $i, $clr);
				}
			}
			
			if ($extention == 'jpeg') {
				imagejpeg($new_image, $_OUTPUT['dir'], $_OPTIONS['quality']);
			} elseif ($extention == 'gif') {
				imagegif($new_image, $_OUTPUT['dir']);
			} elseif ($extention == 'png') {
				imagepng($new_image, $_OUTPUT['dir'], 0);
			}
			
			imagedestroy($new_image);
		}
	}
	
	
	
	
	
	function mode($image, $color='blue', $output, $_OPTIONS) {
		if (!empty($image)) {
			if ($_OPTIONS['image_dir'] != NULL) {
				$image = $_OPTIONS['image_dir'] . $image;
			}
			
			// Afmetingen orginele afbeelding ophalen
			$image_size = getimagesize($image);
				
			// Mime-type ophalen
			if ($image_size['mime'] == 'image/jpeg') {
				$extention = 'jpeg';
			} elseif ($image_size['mime'] == 'image/gif') {
				$extention = 'gif';
			} elseif ($image_size['mime'] == 'image/png') {
				$extention = 'png';
			}
			
			header("Content-type: " . $image_size['mime']);
			
			if ($extention == 'jpeg') {
				$im = imagecreatefromjpeg($image);
			} elseif ($extention == 'gif') {
				$im = imagecreatefromgif($image);
			} elseif ($extention == 'png') {
				$im = imagecreatefrompng($image);
			}
			
			$x = $image_size[0];
			$y = $image_size[1];
			
			$new_image = imagecreatetruecolor($x, $y);
			
			for ($i = 0; $i < $y; $i++) {
				for ($j = 0; $j < $x; $j++) {
					$c = imagecolorat($im, $j, $i);
					
					if ($color == 'blue') {				
						$r = ($c << 16) & 0xFF;
						$g = ($c << 8) & 0xFF;
						$b = $c & 0xFF;
					} elseif ($color == 'green') {
						$r = ($c << 16) & 0xFF;
						$g = ($c >> 8) & 0xFF;
						$b = $c & 0xFF;
					} elseif ($color == 'pink') {
						$r = ($c >> 16) & 0xFF;
						$g = ($c << 8) & 0xFF;
						$b = $c & 0xFF;
					} elseif ($color == 'yellow') {
						$r = ($c >> 16) & 0xFF;
						$g = ($c << 8) & 0xFF;
						$b = $c & 0x00;
					} elseif ($color == 'red') {
						$r = ($c >> 16) & 0xFF;
						$g = ($c << 8) & 0x00;
						$b = $c & 0x00;
					} elseif ($color == 'colorless') {
						$r = ($c >> 16);
						$g = ($c >> 8);
						$b = $c;
					} elseif ($color == 'colorless2') {
						$r = ($c << 16);
						$g = ($c << 8);
						$b = $c;
					} elseif ($color == 'colorless3') {
						$r = ($c << 16);
						$g = ($c >> 8);
						$b = $c;
					} elseif ($color == 'colorless4') {
						$r = ($c << 16);
						$g = $c;
						$b = ($c >> 8);
					} elseif ($color == 'colorless5') {
						$r = $c;
						$g = ($c >> 8);
						$b = ($c >> 16);
					} elseif ($color == 'hot') {
						$r = 225;
						$g = ($c >> 8) & 0xFF;
						$b = 0;
					} elseif ($color == 'nature') {
						$r = ($c >> 8) & 0xFF;
						$g = 225;
						$b = 0;
					}

					$clr = imagecolorallocate($new_image, $r, $g, $b);
					
					imagesetpixel($new_image, $j, $i, $clr);
				}
			}
			
			if ($extention == 'jpeg') {
				imagejpeg($new_image, $_OUTPUT['dir'], $_OPTIONS['quality']);
			} elseif ($extention == 'gif') {
				imagegif($new_image, $_OUTPUT['dir']);
			} elseif ($extention == 'png') {
				imagepng($new_image, $_OUTPUT['dir'], 0);
			}
			
			imagedestroy($new_image);
		}
	}
	
	
	
	
	function graystyle($image, $output, $_OPTIONS) {
		if (!empty($image)) {
			if ($_OPTIONS['image_dir'] != NULL) {
				$image = $_OPTIONS['image_dir'] . $image;
			}
			
			// Afmetingen orginele afbeelding ophalen
			$image_size = getimagesize($image);
				
			// Mime-type ophalen
			if ($image_size['mime'] == 'image/jpeg') {
				$extention = 'jpeg';
			} elseif ($image_size['mime'] == 'image/gif') {
				$extention = 'gif';
			} elseif ($image_size['mime'] == 'image/png') {
				$extention = 'png';
			}
			
			header("Content-type: " . $image_size['mime']);
			
			if ($extention == 'jpeg') {
				$new_image = imagecreatefromjpeg($image);
			} elseif ($extention == 'gif') {
				$new_image = imagecreatefromgif($image);
			} elseif ($extention == 'png') {
				$new_image = imagecreatefrompng($image);
			}
			
			imagefilter($new_image, IMG_FILTER_GRAYSCALE);
			
			if ($extention == 'jpeg') {
				imagejpeg($new_image, $_OUTPUT['dir'], $_OPTIONS['quality']);
			} elseif ($extention == 'gif') {
				imagegif($new_image, $_OUTPUT['dir']);
			} elseif ($extention == 'png') {
				imagepng($new_image, $_OUTPUT['dir'], 0);
			}
			
			imagedestroy($new_image);
		}
	}

	
	
	
	if (isset($_GET['thumb'])) {
		thumb('Dave_grohl2.jpg', $_GET['width'], $_GET['height'], $_OPTIONS['output_dir'], $_OPTIONS);
	} elseif (isset($_GET['rotate'])) {
		rotate('Dave_grohl2.jpg', $_GET['rotate'], $_OPTIONS['output_dir'], $_OPTIONS);
	} elseif (isset($_GET['scale'])) {
		scale('Dave_grohl2.jpg', $_GET['scale'], $_OPTIONS['output_dir'], $_OPTIONS);
	} elseif (isset($_GET['reverse'])) {
		reverse('Dave_grohl2.jpg', 'hor', $_OPTIONS['output_dir'], $_OPTIONS);
	} elseif (isset($_GET['negative'])) {
		negative('Dave_grohl2.jpg', $_OPTIONS['output_dir'], $_OPTIONS);
	} elseif (isset($_GET['graystyle'])) {
		graystyle('Dave_grohl2.jpg', $_OPTIONS['output_dir'], $_OPTIONS);
	} elseif (isset($_GET['mode'])) {
		mode('Dave_grohl2.jpg', $_GET['mode'], $_OPTIONS['output_dir'], $_OPTIONS);
	}
?>