<?php

class simpleImage {
  protected $path;
  
  function __construct($image){
    $this->path = $image;
  }
  
public function scale($width, $height){
    $path = $this->path;
	$filepath = explode('/',$this->path); //разделим папки и имя файла
	$filename = end($filepath); // забираем последний элемент - имя файла
	$filename = substr($filename, 0, -4); //убираем из имени файла расширение
	$filename = str_replace(' ', '_', $filename); //убираем пробелы из имени файла
    $extenstion = substr($this->path, -4); // проверяем расширение файла png, gif, jpg
	
	switch ($extenstion){
	  case '.png':
	    $srcImage = ImageCreateFromPNG( $path );
	  break;
	  case '.jpg':
	    $srcImage = ImageCreateFromJPEG( $path );
	  break;
	  case '.gif':
	    $srcImage = ImageCreateFromGIF( $path );
	  break;
	  default:
	    $srcImage = ImageCreateFromGIF( $path ); 
	  break;
	}
	// определяем изначальную высоту и ширину картинки
	$srcWidth = ImageSX( $srcImage );
	$srcHeight = ImageSY( $srcImage );
	// следующий код проверяет если ширина больше высоты
	// или высота больше ширины картинки так, чтобы
	// при изменении сохранилась правильная пропорция
	$ratioWidth = $srcWidth/$width;
	$ratioHeight = $srcHeight/$height;
	if( $ratioWidth < $ratioHeight){
		$destWidth = $srcWidth/$ratioHeight;
		$destHeight = $height;
	}else{
		$destWidth = $width;
		$destHeight = $srcHeight/$ratioWidth;
	}	
	// создаем новую картинку с конечными данными ширины и высоты
	print $destWidth. '<br />' .$destHeight;
	$destImage = imagecreate( $destWidth, $destHeight);
	// копируем srcImage (исходная) в destImage (конечную)
	ImageCopyResized( $destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight );
	//создаем jpeg
	imagejpeg( $destImage, 'files/presets/'.$width.'_'.$height.'_'. $filename . '.jpg' ,100 ); //необходимо создать папку presets в папке files
	$newImagePath = 'files/presets/'.$width.'_'.$height.'_'. $filename . '.jpg';
	// освобаждаем память
	ImageDestroy( $srcImage );
	ImageDestroy( $destImage );	
	return '<img src="'. $newImagePath . '" width="'. $destWidth.'" height="'. $destHeight . '" />'; // выводим изображение
  }
  
public function scale_and_crop($width, $height){
    $path = $this->path;
	$filepath = explode('/',$this->path); //разделим папки и имя файла
	$filename = end($filepath); // забираем последний элемент - имя файла
	$filename = substr($filename, 0, -4); //убираем из имени файла расширение
	$filename = str_replace(' ', '_', $filename); //убираем пробелы из имени файла
    $extenstion = substr($this->path, -4); // проверяем расширение файла png, gif, jpg
	
	switch ($extenstion){
	  case '.png':
	    $srcImage = ImageCreateFromPNG( $path );
	  break;
	  case '.jpg':
	    $srcImage = ImageCreateFromJPEG( $path );
	  break;
	  case '.gif':
	    $srcImage = ImageCreateFromGIF( $path );
	  break;
	  default:
	    $srcImage = ImageCreateFromGIF( $path ); 
	  break;
	}
	// определяем изначальную высоту и ширину картинки
	$srcWidth = ImageSX( $srcImage );
	$srcHeight = ImageSY( $srcImage );
	// следующий код проверяет если ширина больше высоты
	// или высота больше ширины картинки так, чтобы
	// при изменении сохранилась правильная пропорция
	$ratioSource = $srcWidth/$srcHeight;
	$ratioNew = $width/$height;
	if( $ratioSource < $ratioNew){
		$newWidth = $srcWidth;
		$newHeight = $srcHeight / $ratioNew  * $ratioSource; // расчитываем новую высоту изображения пропорционально заданной ширине
	}else{
		$newWidth = $srcWidth / $ratioSource * $ratioNew; // рассчитываем новую ширину изображения пропорционально заданной высоте
		$newHeight = $srcHeight;	
	}	
	// создаем новую картинку с конечными данными ширины и высоты
	$destImage = imagecreate($width, $height); // отличие от scale()
	// копируем srcImage (исходная) в destImage (конечную)
	imagecopyresampled( $destImage, $srcImage, 0, 0, 0, 0, $width, $height, $newWidth, $newHeight);
	//создаем jpeg
	imagejpeg( $destImage, 'files/presets/'.$width.'_'.$height.'_'. $filename . '.jpg' ,100 ); //необходимо создать папку presets в папке files
	$newImagePath = 'files/presets/'.$width.'_'.$height.'_'. $filename . '.jpg';
	// освобаждаем память
	ImageDestroy( $srcImage );
	ImageDestroy( $destImage );	
	return '<img src="'. $newImagePath . '" />'; // выводим изображение
  }  
  
}

?>