Avatar billede svjensen Nybegynder
24. oktober 2003 - 23:23 Der er 7 kommentarer og
1 løsning

Problem med imagecreatefromjpeg i f.m. resize med GD.

Jeg forsøger at resize et billede jeg uploader, for bagefter at gemme det lille billede som thumb. Men jeg får følgende fejlmeddelelse:

Warning: imagecreatefromjpeg: Unable to open 'Eksempel.jpg' for reading

Den scriptdel der skal generere thumb'en ser således ud:

function createthumb($name,$filename,$new_w,$new_h){
    global $gd2;
    $system=explode(".",$name);

    if (preg_match("/jpg|jpeg/",$system[1])){$src_img=imagecreatefromjpeg($name);}
    if (preg_match("/png/",$system[1])){$src_img=imagecreatefrompng($name);}
    $imginfo = getimagesize($src_img);
    $old_x=imageSX($src_img);
    $old_y=imageSY($src_img);
    Echo $old_x."<br />";
    Echo $old_y."<br />";
    if ($old_x > $old_y) {
        $thumb_w=$new_w;
        $thumb_h=$old_y*($new_h/$old_x);
    }
    if ($old_x < $old_y) {
        $thumb_w=$old_x*($new_w/$old_y);
        $thumb_h=$new_h;
    }
    if ($old_x == $old_y) {
        $thumb_w=$new_w;
        $thumb_h=$new_h;
    }
    if ($gd2==""){
        $dst_img=ImageCreate($thumb_w,$thumb_h);
        imagecopyresized($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
    }else{
        $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
        imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
    }
    if (preg_match("/png/",$system[1])){
        imagepng($dst_img,$filename);
    } else {
        imagejpeg($dst_img,$filename);
    }
    imagedestroy($dst_img);
    imagedestroy($src_img);
}

Hvad kan være problemet?
Avatar billede amix Nybegynder
24. oktober 2003 - 23:25 #1
Hmm prøv at sætte CHMOD 755 på billedet - - -

Bare et forslag ved ikke om det er det. Har dog ikke kigget på din kode.
Avatar billede svjensen Nybegynder
24. oktober 2003 - 23:29 #2
Kan jeg ændre CHMOD for billedet?

CHMOD for mappen er 755, men det ændrer ikke resultatet.
Avatar billede svjensen Nybegynder
24. oktober 2003 - 23:52 #3
Lige lidt uddybende info:
PHP version: 4.2.2.
GD version: 1.6.2. med jpg og png support enabled
Avatar billede amix Nybegynder
24. oktober 2003 - 23:57 #4
I stedet for imagecreatefromjpeg($name) prøv imagecreatefromjpeg('$name') - - Aner ikke om det kan være det, tror det er ligegyldigt, men du kan jo altid prøve.

Endvidere er du sikker på at stien til billedet er rigtig?
Avatar billede svjensen Nybegynder
25. oktober 2003 - 00:09 #5
De to pinger resulterede i at scriptet troede at filen hed $name. Så det var ikke det.

Hvis jeg indsætter
  Echo $name;
umiddelbart efter
  $system=explode(".",$name);
får jeg resultatet:
  Eksempel.jpg
som er den fil jeg vil uploade. Så stien må vel være rigtig?
Avatar billede svjensen Nybegynder
25. oktober 2003 - 00:11 #6
Desuden ser det ud til at scriptet finder ind i den rigtige if sætning, hvilket vel også indikerer at den finder jpg i enden af filnavnet
Avatar billede svjensen Nybegynder
25. oktober 2003 - 00:16 #7
Det ser ud til at du havde en pointe med stien.
Før var min updir defineret som:
  $updir = $_SERVER["DOCUMENT_ROOT"]."/test/upload/";

Jeg prøvede at ændre den til:
  $updir = $_SERVER["DOCUMENT_ROOT"]."/test/";
som er samme sted som scriptet ligger. Og nu virker det.

Men hvordan får jeg det så til at virke med et andet bibliotek som target?
Avatar billede svjensen Nybegynder
29. oktober 2003 - 12:05 #8
Jeg lukker her.
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