Gå til innhold

Lage thumb så lagre det og slette orginalet


Anbefalte innlegg

Hei!

 

Jeg trenger hjelp med en måte med php å laste opp et bilde (si maks 2 mb da), så skal bildet forminskes proporsjonalt (si 150px høyt og dynamisk bredde i forhold til det tidligere bildet slikt at bildet gorblir proporsjonalt). Så skal det nye bildet lagres i en mappe og orginalbildet skal slettes.

 

Jeg trenger da en kode og formen for å gjøre dette.

 

Har søkt på google her og der, men fant ikke noe som funka for meg helt. Hadde vært flott om dere kunne hjelpe meg og eventuelt forklare meg litt hvordan det er oppbygd osv.

 

Takk!

Lenke til kommentar
Videoannonse
Annonse

 

<?php
$rand = rand(1, 1000);
$md5 = md5($rand); 

if(isset($_POST['Submit']))
{
$bildenavn = $md5;  // Brukernavnet til medlemmen som legger opp bildet.
$bildeformat = '.jpg';  // Hva slags bildeformat du vil bildet skal lagres i.
$size = 120; // Thumb størrelse (høyde)

$filedir = 'tmp/'; // Mappen for orginal bildet
$thumbdir = 'image/'; // Mappen for thumb bildet
$prefix = $bildenavn; // Prefiksen for bilde fila.
$tmpprofilbilde = $filedir.$bildenavn.$bildeformat;
$profilbilde = $thumbdir.$bildenavn.$bildeformat;

$maxfile = '2000000'; // 2000 kb eller 2 mb
$mode = '0666';

$userfile_name = $_FILES['image']['name'];
$userfile_tmp = $_FILES['image']['tmp_name'];
$userfile_size = $_FILES['image']['size'];
$userfile_type = $_FILES['image']['type'];

if (isset($_FILES['image']['name'])) 
{
$prod_img = $filedir.$prefix.$bildeformat;

$prod_img_thumb = $thumbdir.$prefix.$bildeformat;
move_uploaded_file($userfile_tmp, $prod_img);
chmod ($prod_img, octdec($mode));
 
$sizes = getimagesize($prod_img);

$aspect_ratio = $sizes[1]/$sizes[0]; 

if ($sizes[1] <= $size)
{
$new_width = $sizes[0];
$new_height = $sizes[1];
}else{
$new_height = $size;
$new_width = abs($new_height/$aspect_ratio);
}

$destimg=imagecreatetruecolor($new_width,$new_height) or die('Feil med å lage bildet!');
$srcimg=imagecreatefromjpeg($prod_img) or die('Problem med å åpne kilde bildet!');
imagecopyresized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,imagesx($srcimg),imagesy($srcimg)) or die('Problem i å gjøre bildet til ny størrelse!');
imagejpeg($destimg,$prod_img_thumb,90) or die('Problem med lagring!');
imagedestroy($destimg);
unlink($tmpprofilbilde);
}

echo '
<span class="main-tittel">Lastet opp</span><br><br>
<img src="'.$prod_img_thumb.'" width="'.$new_width.'" heigt="'.$new_height.'"><br><br>
Bildet er lastet opp og er klart til bruk. Om du vil ha nytt bilde, gå til "profil bilde" og sletter bildet, så laster du opp en på nytt.
';

}else{

echo '
<form action="lagre.php" method="post" enctype="multipart/form-data">

<input name="file" type="file" id="file">
<br>
<input type="submit" name="Submit" value="Submit">
</form>
';

}
?>


 

 

Det er det jeg har nå, men bildet blir ikke lasta opp. Eller jeg har bare testa på lokal webserver på Windows da, men burde ikke være noe forskjell?

Endret av uranus
Lenke til kommentar

HEi I formen har du:

<form action="lagre.php" method="post" enctype="multipart/form-data">

<input name="file" type="file" id="file">
<br>
<input type="submit" name="Submit" value="Submit">
</form>

I delen som behandler det som er sendt har du:

...
$userfile_name = $_FILES['image']['name'];
$userfile_tmp = $_FILES['image']['tmp_name'];
$userfile_size = $_FILES['image']['size'];
$userfile_type = $_FILES['image']['type'];

if (isset($_FILES['image']['name']))
{
...

Ser du feilen ?

 

EDIT: Gikk ikke med bold i code tag... (Det visste jeg jo egentlig, da :()

Endret av kakkle
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...