<?php
	
include('r_constants.php');
include(MAIN_SOURCE_PATH.'/inc/class.img.php');
error_reporting(0);
if ( empty($_REQUEST['width']) && empty($_REQUEST['height']) ){
  	exit();
}

if ( empty($_SERVER['REQUEST_URI']) && empty($_REQUEST['url']) ){
  	exit();
}
if ( !empty($_REQUEST['url']) ){
  $name = $_REQUEST['url'];
}else{
  list($name,) = explode('?', $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']);
}

define('IMAGE_NAME',$name);
define('IMAGE_SET_WIDTH', intval($_REQUEST['width']) );
define('IMAGE_SET_HEIGHT', intval($_REQUEST['height']) );
define('IMAGE_ALPHA',100);
define('IMAGE_QUALLITY',100);



switch($_REQUEST['resize']){
  
  /**
  * ресайз по указанной стороне.
  *
  * @package: HiLo
  */
  case('2'):
    
    $i = new img(IMAGE_NAME);
    if ( $i -> error()!==false ){
      exit();
    }
   
    if ( $i -> width >= IMAGE_SET_WIDTH && IMAGE_SET_WIDTH >0 ){
      $k = $i -> width / IMAGE_SET_WIDTH;
      define('IMAGE_GET_WIDTH', IMAGE_SET_WIDTH );
      define('IMAGE_GET_HEIGHT', round( $i -> height/$k) );
    }elseif( $i -> height >= IMAGE_SET_HEIGHT && IMAGE_SET_HEIGHT >0 ){
      $k = $i -> height / IMAGE_SET_HEIGHT;
      define('IMAGE_GET_HEIGHT', IMAGE_SET_HEIGHT );
      define('IMAGE_GET_WIDTH', round( $i -> width/$k) );
    }else{
      define('IMAGE_GET_WIDTH', $i -> width );
      define('IMAGE_GET_HEIGHT', $i -> height );
    }
    
    $i -> resize(IMAGE_GET_WIDTH,IMAGE_GET_HEIGHT,1);
    header("Content-type:  ".$i -> mime); 
   
    $i -> save();
    break;
  /**
  * уменьшаем изображение по меньшей стороне, остатки обрезаем
  *
  * @package: krfront
  */
  case('3'):
  /* $md5_name = md5(IMAGE_NAME.IMAGE_SET_WIDTH.IMAGE_SET_HEIGHT) ;
      //  кэш
   $s = file_get_contents(MAIN_PATH.'tmp/images/'.$md5_name);
    
    if ( false!==$s ){
        header("Content-type:  image/jpeg"); 
        echo $s;
        exit();
    }*/
    $i = new img(IMAGE_NAME);
    if ( $i -> error()!==false ){
      exit();
    }
     
    if ( $i -> width == $i -> height || $i -> width < $i -> height ){
      //  вычисляем коофициент уменьшения высоты
      $k =  $i -> width/IMAGE_SET_WIDTH ; 
      define('IMAGE_GET_HEIGHT', round( $i -> height/$k) );
      define('IMAGE_GET_WIDTH', IMAGE_SET_WIDTH );
    }else{
      $k = $i -> height/ IMAGE_SET_HEIGHT; 
      define('IMAGE_GET_HEIGHT', IMAGE_SET_HEIGHT );
      define('IMAGE_GET_WIDTH', round( $i -> width/$k) ); 
    }
   
    $i -> resize(IMAGE_GET_WIDTH,IMAGE_GET_HEIGHT,1);
   /* $i -> crop(0,0,50,50);
    $i -> set_name( $md5_name );
    $i -> set_path( MAIN_PATH.'tmp/images');*/
    $i ->save();
    
    header("Content-type:  ".$i -> mime); 
    echo file_get_contents(MAIN_PATH.'tmp/images/'.$md5_name);
    
    break;
}

 exit();
/*
$info = getimagesize(IMAGE_NAME);

if ($info === false){
		exit();
}*/

exit();
	//	

	//	подпись
//$sign = !empty($_REQUEST['sign']) ?	1 : 0;
//$Sign = $base_dir.'/modules/catalog/images/copyright.gif';
//позиция от 1 до 4
//$Pos=4;


	









	//	да это и не изображение вовсе

define('IMAGE_WIDTH', $info[0] );
define('IMAGE_HEIGHT', $info[1]);
define('IMAGE_MIME', $info["mime"] );
list(, $type ) = explode('/',IMAGE_MIME);
define('IMAGE_TYPE', $type );

switch( $_REQUEST['resize'] ){

	case(2):
		/**************
		*
		*	если изображение превысит один из заданных параметров, то мы его пропорционально уменьшаем
		*	иначе не трогаем
		*
		***************/
		$k1 = $k2 = 0;
			//	задан контроль по ширине и ширина занижена
		if ( IMAGE_SET_WIDTH && IMAGE_SET_WIDTH>IMAGE_WIDTH ){
				//	послать ко всем чертям, нельзя увеличивать изображения
			//exit();
		}
				//	задан контроль по высоте и высота занижена
		if ( IMAGE_SET_HEIGHT && IMAGE_SET_HEIGHT>IMAGE_HEIGHT ){
				//	послать ко всем чертям, нельзя увеличивать изображения
			//exit();
		}
		
		
			//	задан контроль по ширине и ширина превышена 
		if ( IMAGE_SET_WIDTH && IMAGE_SET_WIDTH<IMAGE_WIDTH ){
				//	вычисляем коофициент уменьшения по ширине
			$k1 = resize(IMAGE_WIDTH,IMAGE_SET_WIDTH);
		}
			//	задан контроль по высоте и высота превышена 
		if ( IMAGE_SET_HEIGHT && IMAGE_SET_HEIGHT<IMAGE_HEIGHT ){
				//	вычисляем коофициент уменьшения по высоте
			$k2 = resize(IMAGE_HEIGHT,IMAGE_SET_HEIGHT);
		}
		
		
		if ( $k1>$k2 ){
				//	ширина ведущая
			define('IMAGE_GET_WIDTH', round(IMAGE_WIDTH/$k1) );
			define('IMAGE_GET_HEIGHT', round(IMAGE_HEIGHT/$k1) );
		}elseif ( $k1<$k2 ){
				//	высота ведущая
			define('IMAGE_GET_WIDTH', round(IMAGE_WIDTH/$k2) );
			define('IMAGE_GET_HEIGHT', round(IMAGE_HEIGHT/$k2) );
		}elseif ( $k1==$k2  & $k1==0 ){
				//	ничего уменьшать не нужно, вернуть как есть
			header("Content-type:  ".IMAGE_MIME); 
			echo file_get_contents(IMAGE_NAME);
			exit();
		}else{
				//	коофициенты уменьшения равны
			define('IMAGE_GET_WIDTH', round(IMAGE_WIDTH/$k2) );
			define('IMAGE_GET_HEIGHT', round(IMAGE_HEIGHT/$k2) );
		}
		
		break;
	default:
		exit();
		break;
		
	/**
	*  Находим меньшую сторону, уменьшаем по ней до заданной длинны, обрезаем лишнее 
	*
	*/
	case(3):
	 // list(IMAGE_GET_WIDTH,IMAGE_GET_HEIGHT ) = inc_alg_three(IMAGE_WIDTH,IMAGE_HEIGHT);
	  
	  break;
}

	//	когда нам ясно, что нужно делать, начинаем обработку изображения

	//	левая функция какая-то
if ( !function_exists('imagecreatefrom'.IMAGE_TYPE ) ){
	exit();
}else{
	$func_name = 'imagecreatefrom'.IMAGE_TYPE;
}

$source = $func_name(IMAGE_NAME) or die('Cannot load original JPEG');


	//	срздаём изображение с новыми размерами
$target = imagecreatetruecolor(IMAGE_GET_WIDTH, IMAGE_GET_HEIGHT);

imagecopyresampled($target, $source, 0,0,0,0,IMAGE_GET_WIDTH, IMAGE_GET_HEIGHT,IMAGE_WIDTH,IMAGE_HEIGHT  );
header("Content-type:  ".IMAGE_MIME); 


$func_name = 'image'.IMAGE_TYPE;

$func_name($target);

imagedestroy($target);
imagedestroy($source);



function resize($w1,$w2){
  if ( $w1>$w2 ){
    return ($w1 / $w2);
  }elseif( $w1<$w2){
   
   return ($w2 / $w1);
  }else{
    return 1;
  }
}

/**
	*  Находим меньшую сторону, уменьшаем по ней до заданной длинны, обрезаем лишнее 
	*
	*/
function inc_alg_three($w,$h){
    //  находим меньшую сторону
  if ( $w==$h || $w<$h ){
     $w = IMAGE_GET_WIDTH;
     
  }elseif( $w>$h ){
    $min = $h;
  }
  
  
}



?>
