Avatar billede dj-sejler Praktikant
19. februar 2005 - 19:26 Der er 1 kommentar og
1 løsning

oploadet billede skal laves til thumbnail!?

Hej...

jeg har et lille problem...
jeg skal have oploadet et billede i to eksemplarer...
et "stort" og et thumbnail

jeg kan sagtens oploade billedet, men jeg kan ikke gøre noget ved størrelsen, eller oploade det i 2 eksemplarer.

her er min kode:
// Kontrol af filens type
    if ($_FILES["upfil"]["type"] != "image/jpeg") {
      die("Det er ikke et billede du forsøger at oploade!");
    } else {
      $type = "jpg";
    }

    // Billedets dimentioner.
    $kb = 1024; // maks i kb
   
    $thumbdir = "./thumb";      // mappe til thumbnails
    $galleridir = "./images";  // mappe til images

    $konfig["dir_g"] = $galleridir;
    $konfig["dir_t"] = $thumbdir;
    $konfig["max"] = $kb;

    $fra = $_FILES["upfil"]["tmp_name"];
    $fra_thumb = $_FILES["upfil"]["tmp_name"];

    $fil_stoerelse = filesize($fra)/1024;
    if($file_stoerelse > $konfig["max"]) {
      die("Filen er for stor!");
    }
    $size1 = @getimagesize($fra);
    $size2 = @getimagesize($fra_thumb);
   
    echo $size1[0].", "; // bredden i px
    echo $size1[1].", ";  // højden i px
    echo $size1[2];  // filtype: 1=gif, 2=jpg, 3=png
    echo "<br />";
    echo $size2[0].", "; // bredden i px
    echo $size2[1].", ";  // højden i px
    echo $size2[2];  // filtype: 1=gif, 2=jpg, 3=png
    echo "<br />";
   
    if ($size[0] >1200 || $size[1] > 1200) {
      die("Billedet er for stort");
    }
   
    // Hvad vej vender billedet?
    if ($size[0]>$size[1]) {
      $thumb_w = 150;
      $thumb_h = 113;
      $image_w = 800;
      $image_h = 600;
    } else {
      $thumb_w = 85;
      $thumb_h = 113;
      $image_w = 450;
      $image_h = 600;
    }
    // Her skal der kommer noget SQL-kode!
    include("sider/connection.php");
    @mysql_query("INSERT INTO image (gid,date,title,comment,cam_id,key_person,key_location,key_event) VALUES ('$gid','$tid','$title','$comment','$cam_id','$key_person','$key_location','$key_event')") or die("Der er sket en fejl. Fejl: ".mysql_error());
    $iid = mysql_insert_id(); // billedets id

    // Filnavne
      $til_thumb = $konfig["dir_t"] . "/gallery_".$gid."_images_".$iid."_thumb.". $type;
      $til_gallery = $konfig["dir_g"] . "/gallery_".$gid."_images_".$iid.".".$type;

    // Upload billede
      move_uploaded_file($fra_thumb, $til_thumb);
      move_uploaded_file($fra, $til_gallery);


Det er kun et øverste version af billedet der kommer op på serveren, men der ligger noget i dem begge.
Men den der hedder noget med thumb, skal så resize' til $thumb_w og $thumb_h, men jeg ved ikke hvordan jeg skal gøre det...

Er der nogen der kan hjælpe?
Avatar billede dj-sejler Praktikant
19. februar 2005 - 22:48 #1
Da der ikke er nogen der har svartet vil jeg ikke beskrive hvad jeg så har gjort (da jeg ikk selv har lavet det og derfor ikke er helt klar over det), men jeg lukker nu!
Avatar billede brommeweb Nybegynder
19. februar 2005 - 23:14 #2
Dette her skulle gerne viker, det gør det ihvert fald på min server. Det virker dog kun med jpg billeder.
Det uploader det orginale billede og laver et thumb af dette billede. hvis det orginale billede hedder image1.jpg kommer thumb billede til at hedde thumb_image1.jpg

---------------- selve siden ----------
<FORM METHOD=POST ACTION="" enctype="multipart/form-data">
<INPUT TYPE="file" NAME="billede">
<INPUT TYPE="Submit" NAME="" Value="Upload">
</form>


----------------- Dette er selve det kodning --------
<?php

//Den maksimale størrelse det uploadet billede må have, angivet i kb fx 50 kb
$konfiguration["MAX_SIZE"] = 5000;

//Den sti der er til mappen hvor billederne skal ligge   
$konfiguration["upload_dir"] = "billeder";

//her sættes thumb billedes brede.
$maxsize = 50;

//Den aktuelle størrelse på det uploadet billede
$size_kb = $_FILES["billede"]["size"] / 1024;

//tjekker om eksistere altså om det er over 1 kb og om det fylder mindre end max
if ($size_kb > 1 && $size_kb <= $konfiguration["MAX_SIZE"]) {

//den placering som billede skal flyttes fra
$from = $_FILES["billede"]["tmp_name"]; #Billede fra temp fil som skal flyttes
//Den placeing som det skal uploades til. $_FILES["billede"]["name"] er navnet på
//Billede, fx. image1.jpg
$to = $konfiguration["upload_dir"]."/".$_FILES["billede"]["name"];        

  //her uploades billede og hvis det lykkes er if funktionen sand   
  if(move_uploaded_file($from, $to)){
    echo    "Billede er nu uploadet: ".$_FILES["billede".$i]["name"]."<br>";
   
//her tjekkes det om det uploadet billede har en større brede en thumb billede brede
if(imagesx(ImageCreateFromJpeg($to)) > $maxsize){
    $size = $maxsize;  //bredden på thumb
    $sourcefile = $to; //stien til thumb
    $name = "thumb_".$_FILES["billede".$i]["name"]; //navnet på thumb billede
    $thumbsize["width"] = $size; //thumb bredde
    $im = ImageCreateFromJpeg($sourcefile);
    $delta = $thumbsize["width"]/imagesx($im);//Finder forminskings forholdet
    $thumbsize["height"] = round(imagesy($im)*$delta); //forminsker i forhold
   
        //stien med navnet af thumb
        $thumbpath = $konfiguration["upload_dir"]."/".$name;    
       
        //her generes thumb billede.
        $target_id = imagecreatetruecolor($thumbsize["width"], $thumbsize["height"]);
        imagecopyresampled($target_id,$im,0,0,0,0,$thumbsize["width"],$thumbsize["height"],imagesx($im),imagesy($im));                            imageJPEG($target_id, $thumbpath);
   

        echo "<B><U>susses</U></B>";
  }
}
}
?>
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