Видать я не совсем удачный вариант теста выбрал. Сорри. Давайте тогда я выложу код. который есть истинным.
Класс по обрабатыванию картинок
PHP:
скопировать код в буфер обмена
<? class ThumbnailImage
{
private $image;
private $quality = 100;
private $mimetype;
private $imageproperties = array(); private $initialfilesize;
public function __construct($file, $thumbnailsize=100)
{
//проверить файл
is_file($file) or
die("Файл: $file не существует."); $this->initialfilesize = filesize($file); $this->imageproperties = getimagesize($file) or
die ("Недопустимый тип файла."); //создать изображение
switch($this->imageproperties[2])
{
case IMAGETYPE_JPEG:
break;
case IMAGETYPE_GIF:
break;
case IMAGETYPE_PNG:
break;
default:
die("Не могу создать изображение."); }
$this->createThumb($thumbnailsize);
}
private function createThumb($thumbnailsize)
{
//массив элементов для хранения ширины и высоты
$srcW = $this->imageproperties[0];
$srcH = $this->imageproperties[1];
//изменять если только больше максимума
if($srcW > $thumbnailsize || $srcH > $thumbnailsize)
{
$reduction = $this->calculateReduction($thumbnailsize);
//получить пропорциональные величины
$desW = $srcW/$reduction;
$desH = $srcH/$reduction;
imagecopyresampled($copy,$this->image,0
,0
,0
,0
,$desW, $desH, $srcW, $srcH) or
die ("Ошибка при копировании изображения"); //уничтожить оригенал
$this->image = $copy;
}
}
private function calculateReduction($thumbnailsize)
{
$srcW = $this->imageproperties[0];
$srcH = $this->imageproperties[1];
//подогнать
if($srcW < $srcH)
{
$reduction = round($srcH/$thumbnailsize); }
else
{
$reduction = round($srcW/$thumbnailsize); }
return $reduction;
}
public function __destruct()
{
{
}
}
public function getImage()
{
header("Content-type: ".$this->mimetype."\n"); switch($this->imageproperties[2])
{
case IMAGETYPE_JPEG:
break;
case IMAGETYPE_GIF:
break;
case IMAGETYPE_PNG:
imagepng($this->image,"",$this->quality); break;
default:
die ("Не могу создать изображение"); }
}
public function getMimeType()
{
return $this->mimetype;
}
public function setQuality($quality)
{
if($quality > 100 || $quality < 1)
{
$quality = 75;
}
if($this->imageproperties[2] == IMAGETYPE_JPEG)
{
$this->quality = $quality;
}
}
public function getQuality()
{
$quality = null;
if($this->imageproperties[2] == IMAGETYPE_JPEG)
{
$quality = $this->quality;
}
return $quality;
}
public function getInitialFileSize()
{
return $this->initialfilesize;
}
}
?>