webForumDet fria alternativet

Ändra storlek på bilder vid upload

PHPur PHP

24 svar · 1 032 visningar · startad av Steady · sida 2 av 2

Frågan, av Steady

Hejsan! Denna fråga har säkert varit upp en jäkla massa gånger innan men har inte hittat riktigt vad jag söker efter. Det är så att jag vill att när jag laddar upp en bild, som oftast är från kameran, vilka är på 1.5mb så vill jag att den ska ändra storlek på denna bild så den blir ett visst antal pixlar i bredd, och sedan räknas höjden ut procentiuellt. Detta ska ske när man laddar upp bilden o

Läs frågan i sin helhet →
Medlem sedan dec. 2004225 inlägg
#21

Jag var helt ute och vimsade nu ser jag, eftersom jag kollade fel saker i if-satsen. Antar att det har att göra med den mängd alkohol man intog under nyårskvällen. ;)
Har uppdaterat inlägget nu, och det funkar finfint. Och ja, det är en prestandafråga, men eftersom det är en väldigt liten site så känns det som det inte spelar någon större roll.

Tack så mycket för all hjälp kjell, var skickar jag pengarna? :e
Ha de!

/red Envis som jag är, kunde jag inte släppa det där med prestandafrågan, men, eftersom din fråga bara hämtar en post blir det ju inte riktigt rätt heller, vad jag kan förstå. Hur menar du? :)

Medlem sedan dec. 1999757 inlägg
#22

Jag menar att det räcker med en post för att konstatera om det var två timmar sedan någon laddade upp. Jag använde funktionen time() och när jag söker igenom tabellen plockar jag ut högsta värdet (senaste tiden) från fältet Uploadtime i SQL-frågan.

Medlem sedan dec. 2004225 inlägg
#23

Istället för att öppna en helt ny tråd frågar jag här. Hur gör jag om jag vill rotera en bild? Det ska alltså först skapas en thumb av tempbilden så man ser hur den ser ut, sedan ska man kunna välja om man vill rotera bilden 90 grader medsols, 90 grader motsols eller 180 grader. Sedan ska min ovanstående kod köras, för att ladda upp bilden. Har bara hittat hur man gör med jpeg. Går det ens att göra med andra filformat?

Tack på förhand

Medlem sedan dec. 1999757 inlägg
#24

Har aldrig testat att rotera bilder men det fungerar säkert lika bra i formatet png. I manualen för imagerotate finns ett exempel angivet med jpg och det borde fungera på samma sätt med png. Förmodligen bara att byta ut jpg-specifika värden till motsvarande för png, exempelvis imagecreatefromjpeg till imagecreatefrompng o.s.v.

Medlem sedan dec. 2004225 inlägg
#25

Okej, får till det, nästan! :) Såhär ser min thumb.php ut, den kör jag genom att skriva

<img src="thumb.php?bild=bilder/1.jpg" style="border: none;" />

Har försökt att redigera den lite så att den både förminskar och roterar bilden så jag vill ha det.

$maxhojd = 100;    // Byt ut mot önskad maxhöjd
$maxbredd = 100;    // Byt ut mot önskad maxbredd
$imgkvalitet = 90;    // Byt ut mot önskad bildkvalitet (max 100)
$degrees = 90;		// Byt ut mot önskad rotation

if (!isset($_GET['bild']) || !file_exists($_GET['bild'])) {
    exit;
}

$img_x_y_size =  getimagesize($_GET['bild']);

switch($img_x_y_size[2]) {
	case 1;
		header("Content-type: image/gif");
		$imgres = ImageCreateFromGif($_GET['bild']);
	break;
	case 2;
		header("Content-type: image/jpeg");
		$imgres = ImageCreateFromJpeg($_GET['bild']);
	break;
}

$rotate = imagerotate($imgres, $degrees, 0);

$imgbredd = imagesx($imgres);
$imghojd = imagesy($imgres);

$procentbredd = $maxbredd / $imgbredd;
$procenthojd = $maxhojd / $imghojd;

if ($procentbredd < $procenthojd) {
    $nybredd = round($imgbredd * $procentbredd);
    $nyhojd = round($imghojd * $procentbredd);
} else {
    $nybredd = round($imgbredd * $procenthojd);
    $nyhojd = round($imghojd * $procenthojd);
}

$thumbres = ImageCreateTrueColor($nybredd, $nyhojd);

ImageCopyResampled($thumbres, $imgres, 0, 0, 0, 0, $nybredd, $nyhojd, $imgbredd, $imghojd);

ImageDestroy($imgres);

ImageJpeg($thumbres, "", $imgkvalitet);
[b]ImageJpeg($rotate);[/b]

ImageDestroy($thumres);

Den delen jag har markerat med "bold" funkar inte, men om jag tar bort ImageJpeg($thumbres, "", $imgkvalitet); så funkar det. Hur gör jag för att köra två stycken ImageJpeg? Eller går det ens?

139 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)