При търсене в гугъл за php image resize най-отпред излизат простички алгоритми за преоразмеряване.
Обаче при по-особени размери, се дънят като ученичка на сефтето си. 😀 Разбира се, мрежата е необятна и се намират и цели класове, които вършат черната работа. Обаче правим едно елементарно допълнение и нещата си идват на мястото.
Както обикновено, ще си пусна функцията, за да не я търся когато ми притрябва. 😀
function maintbg($name, $tempname)
{
global $wd;
list($width_orig, $height_orig) = getimagesize($tempname);
// същността
$width = 900;
$height = 192;
if (($width_orig > $width) || ($height_orig > $height)) {
if (($width_orig > $width) && ($height_orig > $height)) {
if ($width_orig > $height_orig) {
$k = ($height / $height_orig);
} else {
$k = ($width / $width_orig);
}
} else {
if ($width_orig > $width) {
$k = ($width / $width_orig);
} elseif ($height_orig > $height) {
$k = ($height / $height_orig);
} else {
$k = 1;
}
}
$width = round($width_orig * $k);
$height = round($height_orig * $k);
// край
$small = imagecreatetruecolor($width, $height);
$im = imagecreatefromjpeg($tempname);
imagecopyresampled($small, $im, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
ImageJPEG($small, $wd . "/bg/$name", 80);
ImageDestroy($im);
ImageDestroy($small);
} else {
move_uploaded_file($tempname, $wd . "/bg/$name");
}
chmod($wd . "/bg/$name", 0644);
}
Може пък да свърши на някой работа.
Забележка: При публикуването бях разместил двата коефициента. Сега е наред.