Avatar billede danic Nybegynder
22. januar 2003 - 21:38 Der er 6 kommentarer og
1 løsning

Resize et billede i hukommelsen?

Er det muligt at køre en resize på et billede, som bliver uploadet via en form, altså resize i hukommelsen på web serveren før det bliver gemt på disken?
Avatar billede fangel Nybegynder
22. januar 2003 - 22:05 #1
du kan bruge denne funktion...

function resizeimage($filnavn, $maxhojde, $maxbrede, $gem_som) {

  //Find højde og bredde på billede
    $size = getimagesize($filnavn);
    $width = $size[0];
    $height = $size[1];

    if($height > $maxhojde){
      $newheight = $height / ( $height / $maxhojde);
      $newwidth = $width / ( $height / $maxhojde);
    }
    if($newwidth > $maxbrede){
      $newheight = $newheight / ( $newwidth / $maxhojde);
      $newwidth = $newwidth / ( $newwidth / $maxhojde);
    }

    //lav et nyt billede
    $image = imagecreate($newwidth, $newheight);

    $white = ImageColorAllocate($image,255,0,255);
    ImageFilledRectangle($image,0,0,$newwidth,$newheight,$white);

    //åben det originale billede
    $src = imagecreatefromjpeg($filnavn);
 
    //gem billede
    imagecopyresized($image, $src, 0,0,0,0, $newwidth, $newheight, $width, $height);
    ImagePNG($image);
    ImageDestroy($image);

}

når du så har uploadet din fil, og inden du laver en copy(); hen til disken, fra "upload tmp dir", laver du en

resizeimage($_FILES['upload_felt']['tmp_name'],"200","300","./uploadede_billleder/" . $_FILES['upload_felt']['name']);

håber selv du kan se logiken... gidder ikke lige til at forklare...

OBS::: VIRKER KUN MED .JPG BILLEDER :::OBS

Morten
Avatar billede fangel Nybegynder
22. januar 2003 - 22:07 #2
og lader være med at lave en copy()... scriptet læser tmp filen, resizer den, og gemmer den det rigtige sted...
Avatar billede danic Nybegynder
23. januar 2003 - 09:03 #3
Det var ikke lige det svar jeg søgte,

Vil sige at jeg er nød til først at gemme orginalen på webserveren og derefter lave en resize af orginalen som gemes hvor på orginalen slettes?

Det virker ret tungt :(
Avatar billede fangel Nybegynder
23. januar 2003 - 14:43 #4
nope... når der er en fil der bliver uploadet, kommer den, lige med det samme, lagt i PHP's midlatidige upload mappe, (ved ikke hvor lang tid den bliver liggende der) og normalt laver man en

copy($_FILES['navnet_paa_det_felt_hvor_man_vaelger_fil']['tmp_name'], "./upload/" . $_FILES['navnet_paa_det_felt_hvor_man_vaelger_fil']['name']);
unlink($_FILES['navnet_paa_det_felt_hvor_man_vaelger_fil']['tmp_name']);

for at uploade en fil, og lægge den i sin /upload/ mappe, men her skal du bare lave en (hvis man har funktionen med længere oppe i sit script)

resizeimage($_FILES['navnet_paa_det_felt_hvor_man_vaelger_fil']['tmp_name'],200,300, "./uploade/" . $_FILES['navnet_paa_det_felt_hvor_man_vaelger_fil']['name']);
unlink($_FILES['navnet_paa_det_felt_hvor_man_vaelger_fil']['tmp_name']);

for at resize billedet, og lægge det i sin /uploade/ mappe... man kan ikke "fange" billedet før det bliver gemt...

Morten
Avatar billede alrua Nybegynder
23. januar 2003 - 18:17 #5
er det bare mig eller skriver den der funktion billedet ud til browseren i stedet for at gemme det? :P

-Alrua
Avatar billede fangel Nybegynder
23. januar 2003 - 18:30 #6
KRIMI, glemte at rette noget... du skal skifte linien

ImagePNG($image);

ud med

ImagePNG($image, $gem_som);

dette vil virke (måske, jeg er lidt usikker på filendelsen, hvad den bliver, nok .jpg.png men du kan jeg lege lidt med str_replace() eller eregi_replace() hvis du vil have den til at være pænere...)

og som Alrua/Toke skrev i et andet spm, så kan man med held skifte "imagecreate()" ud med "imagecreatetruecolor()" (var det ikke det funktionen hed?) og "imagecreateresized()" med "imagecreateresambled()"...

Morten
Avatar billede fangel Nybegynder
26. januar 2003 - 12:01 #7
tak...
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