Er det et jpeg billede du prøver at uploade? Billede fylder mere end når de behandles, end lige den 1 mb som filen rent faktisk fylder. Det blev lidt kryptisk, men håber du forstod hvad jeg mente! :o)
Altså.. Det er et stort(x,y) digital billede, som jeg resizer til 1000x1200(ca.) så hvad er det der fylder 16mb? Det er lidt et problem da det er med ét billede, og det bliver en multiuploader, dvs. man skal kunne uploade flere billeder af gangen.
JPG-billeder er komprimerede. For at kunne lave beregninger på dem, så skal du af-komprimeres. Et 1MB JPG-billede kan sagtens fylde omkring 16 MB. En øvelse til dig: gem dit billede som ikke komprimeret BMP, og se hvad det fylder - meget illustrativt...
Jo, man kan gøre noget ved det: få dig en webserver med mere RAM sat af til PHP. Det kan kræve du skifter webhotel. Eller får din egen server. Eller: resize billedet inden du lægger det op.
Well, det bliver en upload service, så kan ikke bede mine brugere om at gemme i BMP eller resize inden :)
Siden bliver lagt op på egen server, men hvis et billede er for meget for et almindeligt webhotel, skal der vel ikke mere end 100 uploads på samme tid til at lægge en server ned :(?
Hver PHP-process får tildelt en max RAM - den sætter du bare op. Jeg skulle engang sætte op fra fra 8 til 16MB, nej det var ikke nok, så til 32MB. Det var nu også en person med et kamera med MANGExFLERE pixels - husker ikke tallene. Er RAM større end Nx32MB, så er der plads til N samtidige brugere (sådan ca.)
Men måske skal man slet ikke bruge PHP til billedupload, men skrive noget mere dynanisk i C++ eller sådan noget. PHP har nu sine begrænsninger...
Du skal ikke bede dine brugere gemme i BMP - det er en øvelse til DIG for at se hvad et ikke-komprimeret billede fylder.
Og man behøver jo ikke resize billederne med det samme, men putte dem i en kø, så man ikke får lagt serveren ned, fordi der pludselig er mange samtidige brugere.
Det der giver problemer er ca. 3000x? Det er digital billeder :)
Mindre billeder(prøvet med et 900x400) giver ikke problemet, der får jeg så bare "Warning: imagecopyresized(): supplied argument is not a valid Image resource in" :)
"Hvordan gør jeg det?" - jamen, lær noget om programmering, og servere og hvad ved jeg - et lille skridt af gangen. Det kan du få sikkert få lidt hjælp til her ;) Eller betal nogen for at løse dine problemer. Kan du ikke se at du pludselig spørger om meget mere end du kan forvente andre bare løser for dig gratis i deres fritid?
Og nej, jeg ved ikke hvorfor du får "Warning: imagecopyresized(): supplied argument is not a valid Image resource in ...". Kan du ikke du ikke se at du mangler, at vise hele koden der leder frem til fejlen. Der er ikke så mange profeter på eksperten.dk ...
erik > Var ikke meningen at det skulle lyde som om jeg bad om en fuld løsning :) Mere en metode e.l., f.eks. hvis det har et navn, eller et sted jeg kan læse om det.
Jep.. Det var også det jeg gjorde, og så skulle den så resize. Men jeg tror bare at jeg sætter en maks filstørrelse istedet. Men det nytter jo så ikke så meget hvis en JPG på 1,2 lægger det hele ned, så kan en 0,99 sikkert også.
Men jeg må bare finde ud af noget når jeg kan teste på egen server.
Du kan som sådan ikke bruge filstørrelsen til noget - den har ikke en direkte sammenhæng med de oprindelige XXXxYYY pixels. Du vil derfor ramme forkert mange gange: Enten afviser du nogen, der kunne have været behandlet, eller også slipper du nogen igennem, der vil give fejl.
Det er egentlig heller ikke så vigtigt om billedet er 2323123x32123423 eller 23x23. Det skal bare tage for meget plads, derfor ville jeg resize alt over 1000x? til 1000x?, da filestørrelsen jo så også bliver mindre(forhåbentlig).
Det er vel netop vigtigt hvor stort billedet er i PIXELxPIXEL, da det den størrelse der går ud over din PHP RAM-allokering, og den kan man ikke se direkte i filstørrelsen.
Ja, det er vel i første omgang løsning, fx fra 16MB til 32MB RAM allokering i PHP, og så se hvad der sker. Det er normalt ikke noget man bare lige får et webhotel til at ændre, men du kan jo eksperimentere med fx Apache/PHP på din egen maskine først.
Det går ikke ned når du uploader, men når du skal til at arbejde med billedet med magecreatefromgif osv. Du kan (formentlig) godt uploade billedet og tjekke dimensionerne, uden det går galt.
Hvis det går galt under upload, så er det max_upload_size i php som ikke er korrekt. Din kode fejler med stor sandsynlighed først, når du begynder at arbejde med billedet via gdlib, som Erik også siger.
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.