Avatar billede djthomas Nybegynder
17. januar 2006 - 21:05 Der er 13 kommentarer og
1 løsning

det går galt med at resize et billede.

Jeg har lavet denne lille class men får denne fejl.

Warning: imagejpeg(): Unable to open 'Resource id #18' for writing in /domains/www.mit-domain.dk/includes/misc/Image.php on line 50

Nogen der kan gennemskue dette? jeg har tjekket at $this->imageFile er rigtig. Men der er dog mellemrum i filnavnet, men det gør vel ikke noget?

class Image{

    var $imageFile = null;

    var $max_width = 800;
    var $quality = 75;

    var $error = null;


    function resize_image(){

        $type = getimagesize($this->imageFile);

                if($type[2] == 1){
                    $img = $this->imageFile;           
                    $im = imagecreatefromgif($img);
                }

                if($type[2] == 2){
                    $img = $this->imageFile;           
                    $im = imagecreatefromjpeg($img);
                }
                if($type[2] == 3){
                    $img = $this->imageFile;           
                    $im = imagecreatefrompng($img);
                }
                if($type[2] == 6){
                    $img = $this->imageFile;           
                    $im = imagecreatefromwbmp($img);
                }
               
                $sz = $this->max_width; //Bredden på de resizede billeder
                $im_width=imageSX($im);
                $im_height=imageSY($im);

                // work out new sizes
               
                $factor = $sz/$im_width;
                $new_width = $sz;
                $new_height = $im_height * $factor;

                // resize
                $new_im=ImageCreateTrueColor($new_width,$new_height);
                ImageCopyResampled($new_im,$im,0,0,0,0,$new_width,$new_height,$im_width,$im_height);

                // output
                Imagejpeg($new_im, $im, $this->quality);

                // cleanup
                ImageDestroy($im);
                ImageDestroy($new_im);
           
       

    }

   

}
Avatar billede whatever Nybegynder
17. januar 2006 - 21:21 #1
Hvad sker der hvis du prøver med en fil uden mellemrum i navnet?
Avatar billede djthomas Nybegynder
17. januar 2006 - 21:23 #2
Det samme - men jeg har lige ændret denne linie lidt:

// output
Imagejpeg($new_im, $im, $this->quality);

Så virker det for så vidt, MEN der må ikke printes noget ud på skærmen - det er en resize function som sker når jeg uploader billedet til serveren. Men den må ikke printe det ud på skærmen - kan man gøre det sådan at den ikke gør det?
Avatar billede coderdk Praktikant
17. januar 2006 - 21:27 #3
Scriptet har ikke rettigheder til at overskrive filen - Lad mig gætte - Det er et billede du selv har uploadet med FTP eller lign?
Du skal ændre rettigheder i dit FTP-program...
Avatar billede coderdk Praktikant
17. januar 2006 - 21:28 #4
Erh, syntaksen er: imagejpeg ( resource image [, string filename [, int quality]] )
Du har brugt $im (som er et resource handle) som filnavn, giv den et navn i stedet ;)
Avatar billede djthomas Nybegynder
17. januar 2006 - 21:28 #5
jeg har oploadet det via webserveren med move_uploaded_file()....
Avatar billede coderdk Praktikant
17. januar 2006 - 21:30 #6
hehe ok, bare giv den et andet navn - Det er sikkert fordi du bruger $im som navn...
Avatar billede djthomas Nybegynder
17. januar 2006 - 21:30 #7
jo jo coderdk men læs lige indlæg 3
Avatar billede coderdk Praktikant
17. januar 2006 - 21:35 #8
Indlæg 3? Dit problem er at du giver et resource handle som filnavn...
Avatar billede djthomas Nybegynder
17. januar 2006 - 21:37 #9
det virker fint når jeg gir den noget andet end $im - jeg har skrevet: Imagejpeg($new_im, $this->imageFile, $this->quality);

Det virker fint, så kommer der ingen fejl, men det er et stort problem at Imagejpeg printer billedet ud på skærmen - det må den IKKE - findes der ikke en anden måde man blot kan gemme det resizede billede og helst med quality funktionen,,,
Avatar billede pidgeot Nybegynder
17. januar 2006 - 21:39 #10
Det tyder på $this->imageFile er en tom streng, og PHP betragter dette som om parameteren ikke er der.

Du må finde ud af hvor du gemmer det filnavn billedet skal gemmes som, og så bruge DET som parameter - det duer ikke at bruge den variabel der indeholder billedet.
Avatar billede djthomas Nybegynder
17. januar 2006 - 21:40 #11
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT
JEG SKAL LÆRE AT STAVE MINE VARIABLER KORREKT

Ups jeg havde blir stave noget forkert i imagejpeg, string name

Hvem skal nu ha point og hvordan?
Avatar billede coderdk Praktikant
17. januar 2006 - 21:50 #12
Jeg skal ikke have nogen, ellers tak :)
Avatar billede pidgeot Nybegynder
17. januar 2006 - 21:52 #13
Behold du dem selv - springer over her ;)
Avatar billede djthomas Nybegynder
17. januar 2006 - 22:00 #14
Oki men takker for hjælpen anyway
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