<?php

function getimagefromfile($filename)
{
	$img_data = getimagesize($filename);
	$ext = image_type_to_extension($img_data[2]);

	switch($ext)
	{
		case '.gif':
			return imagecreatefromgif($filename);
			break;
		case '.jpg':
		case '.jpeg':
			return imagecreatefromjpeg($filename);
			break;
		case '.png':
			return imagecreatefrompng($filename);
			break;
		default:
			return false;
	}
}

function crop_resize($filename, $dest_file)
{
	#REQUIRES:	image be at least 300x245
	$source = getimagefromfile($filename);
	if(!$source)
	{
		return false;
	}
	$dest = imagecreatetruecolor(300, 245);

	#attempt to determine scaling factor
	$data = getimagesize($filename);
	#300x245 reduces to 60x49
	$factor = min(floor($data[0]/60), floor($data[1]/49));
	#well, that should give us a good scaling factor

	#now we have to determine what point to start from
	$src_x = floor(($data[0]/2) - ($factor*30));
	$src_y = floor(($data[1]/2) - ($factor*24.5));

	#make sure we don't fuck things up
	if($src_x < 0) $src_x=0;
	if($src_y < 0) $src_y=0;

	#now resample
	imagecopyresampled($dest, $source, 0, 0, $src_x, $src_y, 300, 245, $factor*60, $factor*49);
	#and output
	imagepng($dest, $dest_file);

	return true;
}

?>
