Return to Snippet

Revision: 58866
at August 7, 2012 17:03 by kh411d


Initial Code
function resizeImage( $file, $thumbpath, $max_side = NULL , $fixfor = NULL, $cropped = false ) {

			// 1 = GIF, 2 = JPEG, 3 = PNG

		if ( file_exists( $file ) ) {
			$type = getimagesize( $file );

			if (!function_exists( 'imagegif' ) && $type[2] == 1 ) {
				$error = __( 'Filetype not supported. Thumbnail not created.' );
			}
			elseif (!function_exists( 'imagejpeg' ) && $type[2] == 2 ) {
				$error = __( 'Filetype not supported. Thumbnail not created.' );
			}
			elseif (!function_exists( 'imagepng' ) && $type[2] == 3 ) {
				$error = __( 'Filetype not supported. Thumbnail not created.' );
			} else {

				// create the initial copy from the original file
				if ( $type[2] == 1 ) {
					$image = imagecreatefromgif( $file );
				}
				elseif ( $type[2] == 2 ) {
					$image = imagecreatefromjpeg( $file );
				}
				elseif ( $type[2] == 3 ) {
					$image = imagecreatefrompng( $file );
				}

				if ( function_exists( 'imageantialias' ))
					imageantialias( $image, TRUE );

				$image_attr = getimagesize( $file );
				$max_side = $max_side ? $max_side : $image_attr[0]; 
				// figure out the longest side
			if($fixfor){
					if($fixfor == 'width'){
						$image_width = $image_attr[0];
					$image_height = $image_attr[1];
					$image_new_width = $max_side;

					$image_ratio = $image_width / $image_new_width;
					$image_new_height = $image_height / $image_ratio;
					}elseif($fixfor == 'height'){
					 $image_width = $image_attr[0];
					$image_height = $image_attr[1];
					$image_new_height = $max_side;

					$image_ratio = $image_height / $image_new_height;
					$image_new_width = $image_width / $image_ratio;	
					}
			}elseif($cropped){
			  $image_new_width = $max_side*2;
			  $image_ratio = $image_attr[0] / $image_new_width;
			  $image_new_height = $image_attr[1] / $image_ratio;
			  
			  $image_resized_crop = imagecreatetruecolor( $image_new_width, $image_new_height);
			  @imagecopyresampled( $image_resized_crop, $image, 0, 0, 0, 0, $image_new_width, $image_new_height, $image_attr[0], $image_attr[1] );

			  $cropX = intval((imagesx($image_resized_crop) - $max_side) / 2);
			  $cropY = intval((imagesy($image_resized_crop) - $max_side) / 2);
			 
			}else{
				if ( $image_attr[0] > $image_attr[1] ) {
					$image_width = $image_attr[0];
					$image_height = $image_attr[1];
					$image_new_width = $max_side;

					$image_ratio = $image_width / $image_new_width;
					$image_new_height = $image_height / $image_ratio;
					//width is > height
				} else {
					$image_width = $image_attr[0];
					$image_height = $image_attr[1];
					$image_new_height = $max_side;

					$image_ratio = $image_height / $image_new_height;
					$image_new_width = $image_width / $image_ratio;
					//height > width
				}
			}	

				
				if(!$cropped){
					$thumbnail = imagecreatetruecolor( $image_new_width, $image_new_height);
					@imagecopyresampled( $thumbnail, $image, 0, 0, 0, 0, $image_new_width, $image_new_height, $image_attr[0], $image_attr[1] );
				}elseif($cropped){
					$thumbnail = imagecreatetruecolor( $max_side, $max_side);
					@imagecopyresampled( $thumbnail, $image_resized_crop, 0, 0, $cropX, $cropY, $max_side, $max_side, $max_side, $max_side);				
				}
				
				if (!imagejpeg( $thumbnail, $thumbpath ) ) {
						$error = 0;
					}
			}
		} else {
			$error = 0;
		}

		if (!empty ( $error ) ) {
			return $error;
		} else {
			return $thumbpath;
		}
	}

Initial URL


Initial Description
Easily make a thumb file, with a fix size, or a cropped center image

Initial Title
Image Resize function for PHP

Initial Tags


Initial Language
PHP