При загрузке аватара, его очень сильно растягивает
я читал на форуме, как это исправить и вот, что я нашел
Чтобы не ломать файл с системными функциями, создаем в папке include свой файл, в котором прописываем такую функцию:
<?php
define('IMG_RESIZE_FIT', 0); // вписывание в квадрат (уменьшение по максимальной стороне)
define('IMG_RESIZE_MAX', 1); // уменьшение по максимальной стороне
define('IMG_RESIZE_MIN', 2); // уменьшение по минимальной стороне
define('IMG_RESIZE_CROP', 3); // обрезка исходной картинки:
// если W>H, то обрезка по бокам, если W<H, то снизу
function func_img_avatar($sFileSrc, $sDirDest, $sFileDest, $iWidthMax, $iHeightMax,
$iWidthDest=null, $iHeightDest=null, $iResizeMode=0) {
if (!($aSize=getimagesize($sFileSrc))) {
return false;
}
$img_src=false;
switch ($aSize['mime']) {
case 'image/png':
$img_src=imagecreatefrompng($sFileSrc);
$sFileDest.='.png';
break;
case 'image/gif':
$img_src=imagecreatefromgif($sFileSrc);
$sFileDest.='.gif';
break;
case 'image/jpeg':
$img_src=imagecreatefromjpeg($sFileSrc);
$sFileDest.='.jpg';
break;
default:
return false;
break;
}
if (!$img_src) {
return false;
}
if (($aSize[0]>$iWidthMax) or ($aSize[1]>$iHeightMax)) {
return false;
}
if ($iWidthDest) {$iScaleW=$iWidthDest/$aSize[0];} else {$iScaleW=1;}
if ($iHeightDest) {$iScaleH=$iHeightDest/$aSize[1];} else {$iScaleH=1;}
if ($iResizeMode==IMG_RESIZE_MAX) {
$iSizeRelation=(($iScaleW<$iScaleH)?$iScaleW:$iScaleH);
$iWidthNew=round($aSize[0]*$iSizeRelation);
$iHeightNew=round($aSize[1]*$iSizeRelation);
$iSizeW=$iWidthNew;
$iSizeH=$iHeightNew;
$iDestX=0;
$iDestY=0;
} elseif ($iResizeMode==IMG_RESIZE_MIN) {
$iSizeRelation=(($iScaleW>$iScaleH)?$iScaleW:$iScaleH);
$iWidthNew=round($aSize[0]*$iSizeRelation);
$iHeightNew=round($aSize[1]*$iSizeRelation);
$iSizeW=$iWidthNew;
$iSizeH=$iHeightNew;
$iDestX=0;
$iDestY=0;
} elseif ($iResizeMode==IMG_RESIZE_CROP) {
$iSizeRelation=(($iScaleW>$iScaleH)?$iScaleW:$iScaleH);
$iWidthNew=round($aSize[0]*$iSizeRelation);
$iHeightNew=round($aSize[1]*$iSizeRelation);
$iSizeH=$iSizeW=(($iWidthNew<$iHeightNew)?$iWidthNew:$iHeightNew);
$iDestX=round(($iSizeW-$iWidthNew)/2);
$iDestY=0;
} else {
$iSizeRelation=(($iScaleW<$iScaleH)?$iScaleW:$iScaleH);
$iWidthNew=round($aSize[0]*$iSizeRelation);
$iHeightNew=round($aSize[1]*$iSizeRelation);
$iSizeH=$iSizeW=(($iWidthNew>$iHeightNew)?$iWidthNew:$iHeightNew);
$iDestX=round(($iSizeW-$iWidthNew)/2);
$iDestY=round(($iSizeH-$iHeightNew)/2);
}
$sFileFullPath=DIR_SERVER_ROOT.'/'.$sDirDest.'/'.$sFileDest;
@func_mkdir(DIR_SERVER_ROOT,$sDirDest);
if ($iWidthDest and $iWidthDest!=$aSize[0]) {
$img_dest=imagecreatetruecolor($iSizeW,$iSizeH);
imagesavealpha($img_dest,true);
imagealphablending($img_dest,false);
if (imagecopyresampled($img_dest, $img_src, $iDestX, $iDestY, 0, 0,
$iWidthNew, $iHeightNew, $aSize[0], $aSize[1])) {
imagedestroy($img_src);
switch ($aSize['mime']) {
case 'image/png':
if (imagepng($img_dest,$sFileFullPath)) {
chmod($sFileFullPath,0666);
}
break;
case 'image/gif':
if (imagegif($img_dest,$sFileFullPath)) {
chmod($sFileFullPath,0666);
}
break;
case 'image/jpeg':
if (imagejpeg($img_dest,$sFileFullPath)) {
chmod($sFileFullPath,0666);
}
break;
}
imagedestroy($img_dest);
return $sFileDest;
}
} else {
if (copy($sFileSrc,$sFileFullPath)) {
return $sFileDest;
}
}
return false;
}
?>
В файле ActionSettings.class.php в методе protected function EventProfile() вызовы функций func_img_resize при загрузке аватар меняем на func_img_avatar.
Так вот первое я сделал, создал файл и все такое, а вот где мне найти «В файле ActionSettings.class.php в методе protected function EventProfile() вызовы функций func_img_resize при загрузке аватар меняем на func_img_avatar.»? Я полностью пролистал файл ActionSettings.class.php, но безрезультатно.
Прошу Вас, пришлите мне скрины, как это исправить!