Det bliver ikke et spørgsmål der er så forfærdeligt let at besvare.
At lave en funktion der 'automatisk reducerer' et billede til en specifik størrelse, er faktisk et temmeligt stort spørgsmål, når man ikke har nogen kildekode at give et eksempel i. Og hvilke billederedigeringsværktøjer har du til rådighed på den server du er på?
Og hvad mener du helt specifikt når du skriver 'bruges til upload i mysql'? Er det fordi du vil indlæse de binære data i MySQL? Eller hvordan skal det forstås?
Hvis serveren har en nogenlunde standard Linux installation, så kan du bruge programmet "convert". I PHP:
// save the file file_put_contents("/tmp/old.png", $pngfile); // convert the file system("/usr/bin/convert /tmp/old.png -resize 80x80\! /tmp/new.png"); // load the new file $pngfile = file_get_contents("/tmp/new.png");
! efter størrelsen er vigtig.
Man kan osse lave noget med image() funktionerne, men der skal en del programmering til og det bliver langsomt hvis skaleringen skal være god kvalitet.
#2 En 'standard Linux installation' indeholder ikke et program der hedder 'convert' Convert er en del af ImageMagick software pakken som heller ikke er en del af en 'standard Linux installation'.
Ydermere er det ikke sikkert at dit kodeeksempel virker, da der ikke er nogen garanti for at brugeren har adgang til /tmp på serveren. Ej heller giver det mening at navngive et billede statisk, da det unægteligt vil skabe en race condition når mere end en bruger anvender siden. Der er heller ingen garanti for at convert er placeret på den statiske sti som du har angivet - hvad hvis OP kun har safe mode adgang?
GD lib bliver ikke langsommere i takt med at kvaliteten skal være højere (især ikke til et 80x80px billede). Det er et spørgsmål om hukommelses forbruget, hvilket er den hyppigste årsag til at de fleste udviklere vælger GD lib fra. Også på trods af de ekstra liniers kode.
Jeg vil nu sige at der er langt imellem Linux'er som ikke indeholder imagemagick - og jeg skrev jo "nogenlunde". Men teknisk set har du da ret - og der er jo heller ikke rigtigt noget der hedder "standard" Linux.
Mit svar handlede om hvordan man bruger "convert" - ikke hvordan man gemmer filer på disk eller hvilke navne man skal bruge.
Hvad hastighed angår - jeg glemte/overså imagecopyresampled() og tænkte istedet på at lave det manuelt, tak for at du fik mig til at kigge på imagecopyresampled().
Her er et eksempel som bruger imagecopyresampled(). Og ja, jeg ved det ikke vil virke hvis GD ikke er inkluderet i PHP, eller hvis det er en gammel GD, eller hvis man ikke har adgang til /tmp eller hvis der ikke er hukommelse nok, eller hvis input ikke er PNG (så skal man måske bruge imagecreatefromstring()) eller 100 andre ting!
Tak for alle de hurtige svar,, (mit spørgsmål var nok lidt tåget), fandt en kode der laver en thumbnail, på hvad jeg nu vælger eks. 80x80 px.(jpg), thump uplodader ok, kvalitet ok, men der er en fejl, se herunder.. men er der noget der er simplere?? det drejer sig blot om at skalere et billede ned til eks, de 80x80 px.?? så enkel, og let som mulig, er ikke hel hjemme i PHP (endnu)!! endnu engang tak.. Gert
Warning: imagejpeg() [function.imagejpeg]: Unable to open
'resize/resize_4123c7c7b3ee9e52b9c09cce57c685cb867f9803.jpg' for writing: Permission denied in /var/www/filupload/jpgtest.php on line 57 File (4123c7c7b3ee9e52b9c09cce57c685cb867f9803.jpg) uploaded succesfully, but resize and thumb failed
<?php
//http://www.eksperten.dk/spm/927549
//SETTINGS
$uploadDir = 'gaest/'; //Bibliotek, hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
Hej, ja chmod glemte jeg på denne mappe, sorry, så det virker, så alt er godt, men er der noget mere enkelt der kun gør som fortalt i spørgsmål nr.5? ellers mange tak for hjælpen. Gert
Hej sorry, det var nok fordi jeg ikke lukkede spørgsmålet korrekt, der var absalut mange gode svar, som var brugbare..endnu engang tak, < Gert,
Synes godt om
Ny brugerNybegynder
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.