Avatar billede gregorian Nybegynder
18. oktober 2004 - 22:41 Der er 13 kommentarer og
1 løsning

Thumbnail script. Hjælp til fejlsøgning

Hey alle sammen.
Herunder ser i et script jeg har bikset sammen, men som har et problem som jeg ikke kan lokalisere..
Scriptet skal rezise et billede som bliver tilføjet til en billedeserie til 400x400 som bliver defineret i maxwidth og maxheight.. dette sker også normalt med billeder under 1600x1600 eller deromkring.. (har ikke fundet ud af helt hvornår det sker endnu, men har pt et billede på 2272x1704(fylder 1,01mb hvis det nu kan hjælpe) som IKKE bliver resizet og overskrevet..

kan simpelthen ikke finde fejlen og håber nu på at eksperterne herinde kan give en hjælpende hånd..



function createThumb($sfile,$dfile,$maxwidth,$maxheight) {
   
    $simg = imagecreatefromjpeg($sfile);
    $currwidth=imagesx($simg);
    $currheight=imagesy($simg);

    //set the dimensions of the thumbnail
    if ($currheight > $currwidth * 1.7) {
      $zoom = $maxheight / $currheight;
      $newheight = $maxheight;
      $newwidth = $currwidth * $zoom;
    } else {
      $zoom = $maxwidth / $currwidth;
      $newwidth = $maxwidth;
      $newheight = $currheight * $zoom;
    }

    //create the resource img for the thumbnail
    $dimg = imagecreate($newwidth, $newheight);

    //convert truecolor immage resource to palette image resource (so we can count the colors...)
    imagetruecolortopalette($simg, false, 256);
    $palsize = ImageColorsTotal($simg);
    for($i=0; $i<$palsize; $i++){
      $colors = imagecolorsforindex($simg, $i);
      imagecolorallocate($dimg, $colors['red'], $colors['green'], $colors['blue']);
    }

    imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight);
    imagejpeg($dimg,$dfile);
   
    imagedestroy($simg);
    imagedestroy($dimg);
}
Avatar billede Slettet bruger
18. oktober 2004 - 22:47 #1
Fejlen ligger nok i at din webserver er sat op med for lille værdi i en af følgende:

post_max_size
upload_max_filesize
max_execution_time
Avatar billede gregorian Nybegynder
18. oktober 2004 - 22:51 #2
Kiggede lige phpinfo igennem
post_max_size = 8mb
upload_max_filesize = 2mb
max_execution_time = 30

umiddelbart lyder det ikke som sådan, da filen jo kun fylder 1.01mb.. (kun og kun)
Avatar billede sukos Juniormester
18. oktober 2004 - 22:57 #3
GD kan ikke håndtere billeder som er større end 2000 x 2000, (cirka, husker ikke den nøjagtige max. str)
Avatar billede gregorian Nybegynder
18. oktober 2004 - 22:59 #4
er der overhovedet noget jeg kan gøre ved det?
skulle jo gerne have det til at virke..
Avatar billede sukos Juniormester
18. oktober 2004 - 23:04 #5
Så vidt jeg ved, kan imagemagick gøre det.
Men skal jo så være installeret på serveren.
Avatar billede gregorian Nybegynder
18. oktober 2004 - 23:10 #6
den går ikke.. desværre.. har ikke adgang til at installere på serveren og ville godt have det som script..

sidder og læser på php.net og kan ikke finde noget med at GD har en begrænsning i billedestørrelsen..

er du sikker på dit udsagn?
Avatar billede sukos Juniormester
18. oktober 2004 - 23:10 #7
Jahh, har læst det et par gange her på exp! :O)
Avatar billede gregorian Nybegynder
18. oktober 2004 - 23:12 #8
søger lige efter om der skulle ligge en anden løsning et sted.. skal squ have det til at virke ::!!!
Avatar billede gregorian Nybegynder
18. oktober 2004 - 23:25 #9
kan godt se at der er flere der har omtalt samme problem som jeg, men der må da være en anden brugbar løsning end at skulle installere et program på serveren..

alle ideer modtages..
Avatar billede kimg Nybegynder
19. oktober 2004 - 07:20 #10
Jeg løste det problem ved at skrive:
php_value memory_limit 30M
i min .htaccess fil.

Kim
Avatar billede gregorian Nybegynder
19. oktober 2004 - 12:58 #11
nå alle sammen..

har nu bikset et nyt script sammen, men kan stadigvæk ikke se hvorfor mit gamle ikke vil..
har genbrugt lidt fra nye og gamle scripts og nu virker det altså.
DER ER INGEN BEGRÆNSNING I GD da jeg nu kan resize billeder på over 3000px X 3000px..

sådan ser det færdige script ud


function createThumb($sfile,$dfile,$maxwidth,$maxheight) {
    $sfile = "../../../billeder/StaevneVirum2004/IMG_1611.jpg";
    $dfile = "../../../billeder/StaevneVirum2004/IMG_1611.jpg";

    //indlæser billedet
    $src_img = imagecreatefromjpeg($sfile);
   
    // finder diminsioner
    $currwidth=imagesx($src_img);
    $currheight=imagesy($src_img);

    //Udregner størrelsesforhold
    $size = getimagesize($filnavn);
    $width = $size[0];
    $height = $size[1];

    if ($currheight > $currwidth * 1.7) {
      $zoom = $maxheight / $currheight;
      $newheight = $maxheight;
      $newwidth = $currwidth * $zoom;
    } else {
      $zoom = $maxwidth / $currwidth;
      $newwidth = $maxwidth;
      $newheight = $currheight * $zoom;
    }

    //opretter midlertidigt billede på serveren
    $dst_img = imagecreatetruecolor($newwidth, $newheight);

    //kopier src billedet ind i det nye midlertidige med nye diminsioner
    imagecopyresized($dst_img,$src_img,0,0,0,0,$newwidth,$newheight,$currwidth,$currheight);
   
    // gemmer billedet i 100% kvalitet
    imagejpeg($dst_img, $sfile, 100); 
}
Avatar billede gregorian Nybegynder
19. oktober 2004 - 12:58 #12
lukker
Avatar billede sukos Juniormester
19. oktober 2004 - 14:35 #13
Hvor kommer $filnavn fra?????
($size = getimagesize($filnavn);)
Avatar billede gregorian Nybegynder
19. oktober 2004 - 15:20 #14
function createThumb($sfile,$dfile,$maxwidth,$maxheight) {
    $sfile = "../../../billeder/StaevneVirum2004/IMG_1611.jpg";
    $dfile = "../../../billeder/StaevneVirum2004/IMG_1611.jpg";

    //indlæser billedet
    $src_img = imagecreatefromjpeg($sfile);
   
    // finder diminsioner
    $currwidth=imagesx($src_img);
    $currheight=imagesy($src_img);

    if ($currheight > $currwidth * 1.7) {
      $zoom = $maxheight / $currheight;
      $newheight = $maxheight;
      $newwidth = $currwidth * $zoom;
    } else {
      $zoom = $maxwidth / $currwidth;
      $newwidth = $maxwidth;
      $newheight = $currheight * $zoom;
    }

    //opretter midlertidigt billede på serveren
    $dst_img = imagecreatetruecolor($newwidth, $newheight);

    //kopier src billedet ind i det nye midlertidige med nye diminsioner
    imagecopyresized($dst_img,$src_img,0,0,0,0,$newwidth,$newheight,$currwidth,$currheight);
   
    // gemmer billedet i 100% kvalitet
    imagejpeg($dst_img, $sfile, 100); 
}

sådan.. har brugt lidt forskellige metoder dele fra mine andre scripts.. det var bare en restkode..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester