webForumDet fria alternativet

Får ej ut något från imagecopyresampled()

PHP

1 svar · 1 037 visningar · startad av prplxr

Medlem sedan juni 2012581 inlägg
Frågan#1

Tjohej!

Sitter och sliter mitt hår pga en hel uppsjö bilder som jag vill ha skalade och beskurna till ration 16:9 i storlek 400x225 oavsett vilken bredd och höjd de haft tidigare.

Jag kommer naturligtvis själv sitta och försöka lösa detta, men jag vet inte vart jag ska börja titta. Om någon ser något uppenbart fel så kan ni väl hojta till!

$oimgurl = 	trim($url[$i]);
$ext = 		end(explode('.', $oimgurl));

switch($ext) {
	case "jpg":
		$img = imagecreatefromjpeg($oimgurl);
	break;
	case "jpeg":
		$img = imagecreatefromjpeg($oimgurl);
	break;
	case "png":
		$img = imagecreatefrompng($oimgurl);
	break;
	case "gif":
		$img = imagecreatefromgif($oimgurl);
	break;
};

$fimg = 	imagecreatetruecolor(400, 225);
$oimginfo = getimagesize($oimgurl);
$owidth = 	$oimginfo[0];
$oheight = 	$oimginfo[1];
$fratio = 	16/9;
$oratio =	$owidth/$oheight;

if($oratio > $fratio) {
	// Om originalbilden har bredare ratio än 16:9.
	// Har ej börjat på denna, men är ju samma som under men "tvärt om".
} elseif($oratio < $fratio) {
	// Om originalbilden har högre ratio än 16:9.
	imagecopyresampled(
		$fimg,
		$img,
		0,
		0,
		0,
		floor(($oheight-($owidth/$fratio))/2),
		400,
		225,
		$owidth,
		floor($oheight/$ratio)
	);
} else {
	// Om originalbilden har ration 16:9.
	imagecopyresampled(
		$fimg,
		$img,
		0,
		0,
		0,
		0,
		400,
		225,
		$owidth,
		$oheight
	);
};

ob_start();
	imagejpeg($fimg);
	$output = ob_get_contents();
ob_end_clean();

$imgb64 = base64_encode($output);
echo "<img src=\"data:image/x-icon;base64,{$imgb64}\" />";

Problemet jag har uppstår efter "// Om originalbilden har högre ratio än 16:9.", men inte om bilden har rätt ratio från början.

$url[$i] innehåller URLen till bilden i fråga.

Medlem sedan juni 2012581 inlägg
#2

Ganska exakt ett dygn senare hittade jag mitt stavfel. Någon variabel som heter $ratio existerar ju inte.

:moose

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)