webForumDet fria alternativet

Thumbnail klarar inte stora bilder

7 svar · 254 visningar · startad av Melea

MeleaMedlem sedan juli 20033 147 inlägg
#1

Hejhej!

Har en thumbnailkod som ser ut såhär:

$maxheight = 100;
$maxwidth = 150;
$imgquality = 90;

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

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

switch($img_x_y_size[2]) {
case 1:
	$imgres = ImageCreateFromGif($_GET['bild']);
	break;
case 2:
	$imgres = ImageCreateFromJpeg($_GET['bild']);
	break;
case 3:
	$imgres = ImageCreateFromPng($_GET['bild']);
	break;
}

$imgwidth = imagesx($imgres);
$imgheight = imagesy($imgres);

$procentwidth = $maxwidth / $imgwidth;
$procentheight = $maxheight / $imgheight;

if ($procentwidth < $procentheight) {
    $newwidth = round($imgwidth * $procentwidth);
    $newheight = round($imgheight * $procentwidth);
} else {
    $newwidth = round($imgwidth * $procentheight);
    $newheight = round($imgheight * $procentheight);
}

if ($maxwidth < $img_x_y_size[0]) {
	$thumbres = ImageCreateTrueColor($newwidth, $newheight);
} else {
	$thumbres = ImageCreateTrueColor($img_x_y_size[0], $img_x_y_size[1]);
}

if ($maxwidth < $img_x_y_size[0]) {
	ImageCopyResampled($thumbres, $imgres, 0, 0, 0, 0, $newwidth, $newheight, $imgwidth, $imgheight);
} else {
	ImageCopyResampled($thumbres, $imgres, 0, 0, 0, 0, $img_x_y_size[0], $img_x_y_size[1], $img_x_y_size[0], $img_x_y_size[1]);
}

ImageDestroy($imgres);

ImageJpeg($thumbres, "", $imgquality);

ImageDestroy($thumres);

Men som det är nu, verkar det inte som den klarar av bilder som är mer än en viss bredd/höjd. Någon som ser vad det kan bero på?

Tack på förhand
MVH

MatteMedlem sedan aug. 20002 975 inlägg
#2

Med default-inställningar i konfigurationen för memory_limit (8M) så är begränsningen på bildstorlek någonstans runt 1000x800, sedan tar tilldelat internminne slut.

Detta är något som måste ändras i php.ini av dig eller webbhotellet

MeleaMedlem sedan juli 20033 147 inlägg
#3

den är 700*900.. Men nu såg jag att användaren laddat upp en BMP-bild.
Inte jag som byggt systemet från början, hjälper bara till och fixa iordning det, och jag antar att det nu ligger ca 200 bmp bilder uppe, så det är för sent att ändra.

Kan man inte lägga till ImageCreateFromWbmp? Eller hur ska case-satsen se ut då?

switch($img_x_y_size[2]) {

case 1:
    $imgres = ImageCreateFromGif($_GET['bild']);
    break;
case 2:
    $imgres = ImageCreateFromJpeg($_GET['bild']);
    break;
case 3:
    $imgres = ImageCreateFromPng($_GET['bild']);
    break;
case 4:
	$imgres = ImageCreateFromWbmp($_GET['bild']);
	break;
}

MVH

fiddlerMedlem sedan juli 20023 617 inlägg
#4

Wbmp är inte detsamma som bmp vad jag förstår. Ta en titt på detta istället: http://jpexs.wz.cz/?page=php&Language=eng

Jag har inte testat själv...

MeleaMedlem sedan juli 20033 147 inlägg
#5

Testade med ImageCreateFromBMP, men det ville sig inte heller. Något mer förslag? :)

MeleaMedlem sedan juli 20033 147 inlägg
#6

Matte skrev:

Med default-inställningar i konfigurationen för memory_limit (8M) så är begränsningen på bildstorlek någonstans runt 1000x800, sedan tar tilldelat internminne slut.

Detta är något som måste ändras i php.ini av dig eller webbhotellet

Har nu kollat upp vad gränsen ligger nu, den är på 16MB så problemet borde inte ligga där.

MatteMedlem sedan aug. 20002 975 inlägg
#7

BMP-filer brukar bli en bit större i Byte än Jpeg-filer.

Du har även upload_max_filesize som default är satt till 2MB.

MeleaMedlem sedan juli 20033 147 inlägg
#8

Matte skrev:

BMP-filer brukar bli en bit större i Byte än Jpeg-filer.

Du har även upload_max_filesize som default är satt till 2MB.

Jojomen, den är satt till 500MB, fråga mig inte varför. :)

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