Допустим, в htdocs в одной папке имеется изображение с именем «image.jpg»;
И имеется php-файл:
<font face="Arial"><font size="1"><font color="maroon"><?php
header('Content-type: image/jpg');
function resizeImage($path, $maxWidth, $maxHeight, $imageExp=false) {
//Проверка правильного пути к изображению
if (!file_exists($path)) {
echo 'error 6';
return false;
}
//Проверка правильности расширения
if ($imageExp) {
$expArray = array(1=>'gif', 2=>'jpg', 3=>'png');
$expError = true;//Если расширение правильное, переменная должна стать "false"
foreach($expArray as $key => $val) {
if ($imageExp == $val) {
$imageExp = $key;
setType($imageExp, 'integer');
}
}
if(!$imageExp || !is_int($imageExp)) {
echo 'error 22';
return false;
}
}
//Создаём массив с параметрами изображения
$imageInfo = getimagesize($path);
//Создаём переменные с размерами изображений
$widthImageSize = $imageInfo[0];
$heightImageSize = $imageInfo[1];
$srcImage;
switch($imageInfo[2]){
case 1: $srcImage = ImageCreateFromGIF($path); break;
case 2: $srcImage = ImageCreateFromJPEG($path); break;
case 3: $srcImage = ImageCreateFromPNG($path); break;
}
if (getType($srcImage) != 'resource') {
echo 'error 41';
return false;
}
//Узнаём число, во сколько надо уменьшить картинку до нужных размеров
$ratioWidth = $widthImageSize/$maxWidth;
$ratioHeight = $heightImageSize/$maxHeight;
//Проверяем, не являются ли размеры изображения ниже необходимых, если не являюся, то узнаём
//пропорциональные размеры изображения, если являются - оставляем изначальные размеры
if($widthImageSize > $maxWidth || $heightImageSize > $maxHeight) {
if($ratioWidth > $ratioHeight){
$widthSize = $maxWidth;
$heightSize = $heightImageSize/$ratioWidth;
}else{
$widthSize = $widthImageSize/$ratioHeight;
$heightSize = $maxHeight;
}
} else {
$widthSize = $widthImageSize;
$heightSize = $heightImageSize;
}
//Создаём новое изображение
$destImage = imagecreate($widthSize, $heightSize);
//Копируем исходное изображение в созданое изображение с заданными размерами
ImageCopyResized($destImage, $srcImage, 0, 0, 0, 0, $widthSize, $heightSize, $widthImageSize, $heightImageSize);
//Создаём картинку, согласно заданной переменной, либо по умолчанию
//Проверяем, было ли задано расширение по умолчанию, если нет, то оставляем расширение
//загружаемого изображения
$createImageExp;//Переменная, содержащая номер необходимого расширения
if ($imageExp) {
$createImageExp = $imageExp;
} else {
$createImageExp = $imageInfo[2];
}
switch($createImageExp){
case 1: $resizedImage = imagegif($destImage); break;
case 2: $resizedImage = imagejpeg($destImage); break;
case 3: $resizedImage = imagepng($destImage); break;
}
// освобаждаем память
ImageDestroy($srcImage);
ImageDestroy($destImage);
return $resizedImage;
}
//resizeImage(Путь_к_изображению, ширина, высота, желаемое расширение)
resizeImage('image.jpg', 800, 600, false);
?></font id="maroon"></font id="size1"></font id="Arial">
<font face="Times New Roman"><font size="3">
Необходимо, чтобы эта функция масштабировала введёное изображение. Масштабировать она умеет, но вид изображения до масштабироания:

отличается от вида после масштабирования:

</font id="size3"></font id="Times New Roman">
В чём может быть дело?