Scripts

Img Resizen

dit is de eerste keer dat ik en stuk code toevoeg op of aanmerkingen zijn welkom de werking lijkt me vanzelf sprekend. uitleg in de code te vinden, als je en foto wil met en bepaald formaat op en bepaalde manier etc etc kun je allemaal opgeven in de url naar de foto bv:

img-resizen
<?php

// image.php?mode=<scale_mode>&img=<image_name>&height=<canvas_height>&width=<canvas_width>&quality=<image_quality>&bw=<image_blackwhite>

// <canvas_height>						niet opgegeven: waarde is waarde originele afbeelding.
// <canvas_width>						niet opgegeven: waarde is waarde originele afbeelding.
// <image_name> 						naam (of eventueel path + naam) 
// <image_quality>   					kwaliteit jpg van 1-100;  niet opgegeven: waarde is default waarde hieronder.
// <image_blackwhite>   				true or false (default = false) afbeelding in zwartwit.
// <scale_mode> = "crop" of "fit"		fit: opgegeven img past geheel binnen canvas,	
//										crop: img wordt uitgevuld op canvas, uitstekende delen worden gecropt.


// defaults
$quality = 70;
$mode = "crop"; // mode is "crop" of "fit"
$bw = false;

// The file
$filename = htmlentities($_GET['img']);
//if(!is_file($filename)){ exit("no file"); }
//de controle hier boven ken je aan of uit zetten net wat je wilt :)

// Get original dimensions
if( !(list($width, $height, $type, $attr) = @getimagesize($filename)) ){ exit; }

// overwrite default stettings
if(!empty($_GET['quality']) && is_numeric($_GET['quality']) && $_GET['quality'] > 0 && $_GET['quality'] <= 100){ $quality = htmlentities($_GET['quality']); }
if(isset($_GET['mode'])){ $mode = htmlentities($_GET['mode']); }
if($_GET['bw'] === "true"){ $bw = true; }

// new canvas size
$thumb_height = $height;
$thumb_width = $width;
if(!empty($_GET['height']) && is_numeric($_GET['height']) && $_GET['height'] < $height && $_GET['height'] > 19){ $thumb_height = htmlentities($_GET['height']); }
if(!empty($_GET['width']) && is_numeric($_GET['width']) && $_GET['width'] < $width && $_GET['width'] > 19){ $thumb_width = htmlentities($_GET['width']); }


		
	//Creates yiq function
	function yiq($r,$g,$b)
	{
		return (($r*0.299)+($g*0.587)+($b*0.114));
	}
	

//////////////////////////////////////////////////
// ---------------- rescale  --------------------

if($mode == "crop"){

	// scale and crop to canvas
	if($height/$width < $thumb_height/$thumb_width){
		// original image is wider than canvas
		$new_height = $thumb_height;
		$new_width = $width * ($thumb_height/$height);
		$new_y = 0;
		$new_x = ($new_width - $thumb_width)/2;
	}else{
		// original image is higher than canvas
		$new_width = $thumb_width;
		$new_height = $height * ($thumb_width/$width);
		$new_x = 0;
		$new_y = ($new_height - $thumb_height)/2;
	}
	
}else{ 
	// mode is "fit" 
	
	// fit to canvas
	if($height/$width < $thumb_height/$thumb_width){
		// original image is wider than canvas
		$new_width = $thumb_width;
		$new_height = ($thumb_width/$width) * $height;
		$thumb_height = $new_height;
		$new_x = 0;
		$new_y = 0;
	}else{
		// original image is higher than canvas
		$new_height = $thumb_height;
		$new_width = ($thumb_height/$height) * $width;
		$thumb_width = $new_width;
		$new_y = 0;
		$new_x = 0;
	}
}

// ---------------- rescale  --------------------
//////////////////////////////////////////////////


if($type == 1){ // img is GIF
	// Content type
	header("Content-type: image/gif");
	
	// Resample
	$image_p = imagecreatetruecolor($thumb_width, $thumb_height);
	$image = imagecreatefromgif($filename);
	imagecopyresampled($image_p, $image, 0, 0, $new_x, $new_y, $new_width, $new_height, $width, $height);
	
	// Output
	imagegif($image_p, null, $quality);

}elseif($type == 2){ // img is JPG
	// Content type
	header('Content-type: image/jpeg');
	
	// Resample
	$image_p = imagecreatetruecolor($thumb_width, $thumb_height);
	$image = imagecreatefromjpeg($filename);
	imagecopyresampled($image_p, $image, 0, 0, $new_x, $new_y, $new_width, $new_height, $width, $height);
	
	// create black and white image
	if($bw && $thumb_width < 800 && $thumb_height < 800){
				
		// Creating the Canvas
		$bwimage= imagecreatetruecolor($thumb_width, $thumb_height);
		
		//Creates the 256 color palette
		for ($c=0;$c<256;$c++)
		{
			$palette[$c] = imagecolorallocate($bwimage,$c,$c,$c);
		}
		
		//Reads the origonal colors pixel by pixel
		for ($y=0;$y<$thumb_height;$y++)
		{
			for ($x=0;$x<$thumb_width;$x++)
			{
				$rgb = imagecolorat($image_p,$x,$y);
				$r = ($rgb >> 16) & 0xFF;
				$g = ($rgb >> 8) & 0xFF;
				$b = $rgb & 0xFF;
				
				//This is where we actually use yiq to modify our rbg values, and then convert them to our grayscale palette
				$gs = yiq($r,$g,$b);
				imagesetpixel($bwimage,$x,$y,$palette[$gs]);
			}
		}
	
		// black and white Output
		imagejpeg($bwimage, null, $quality);
		
		
	}else{
	
		// color Output
		imagejpeg($image_p, null, $quality);
		
	}
	
}

?>

Reacties

0
Nog geen reacties.