Ganska exakt ett dygn senare hittade jag mitt stavfel. Någon variabel som heter $ratio existerar ju inte.
:moose
1 svar · 1 037 visningar · startad av prplxr
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.
Ganska exakt ett dygn senare hittade jag mitt stavfel. Någon variabel som heter $ratio existerar ju inte.
:moose