Avatar billede clausga Nybegynder
06. januar 2005 - 21:40 Der er 14 kommentarer og
1 løsning

image resizer

jeg har et script der oploader jpg filer i en mappe, så de så bag efter vises på en side.... og det fungere også perfekt :)

men skal bruge et script som resizer billedet til fx en MAX størrelse på 100*100 pixel....
Avatar billede detox Nybegynder
06. januar 2005 - 22:01 #1
Her er en funktion jeg selv benytter:

function Thumb($sourcefile, $targetfile, $size) {
    $source_id = imageCreateFromJPEG($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $size/max($source_x,$source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg($target_id,$targetfile, 100);
}

Den kaldes så med:

$source = "img/originalt_billede.jpg";
$target = "img/thumbs/thumb_billede.jpg";
$size = 100;
Thumb($source, $target, $size);
Avatar billede clausga Nybegynder
06. januar 2005 - 22:04 #2
target er vel der for den skal gemmes... men.... size er det så max pixel ?
Avatar billede detox Nybegynder
06. januar 2005 - 22:07 #3
Ja, det er korrekt. Nu ved jeg ikke om du vil bruge den i forbindelse med upload eller på billeder du allerede har liggende, men det er selvfølgelig muligt at bruge funktionen på hele mapper eller direkte ved uploads.
Avatar billede clausga Nybegynder
06. januar 2005 - 22:09 #4
<form action="on-step2.php" method="post" enctype="multipart/form-data">
<input type="file" name="upfil" >

$konfiguration["upload_bibliotek"] = "../upload";


$konfiguration["max_stoerrelse"] = "3000";


list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
  die("lort");
}



if($minor < 1) {
  $_FILES = $HTTP_POST_FILES;
  $_POST = $HTTP_POST_VARS;
  $_SERVER = $HTTP_SERVER_VARS;
}


if($_FILES["upfil"]["size"] > 0) {


  $fra = $_FILES["upfil"]["tmp_name"];
  $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
  $billedinfo = $_FILES["upfil"]["name"];


  $fil_stoerrelse = filesize($fra)/1024;
  if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
      die("Desv&aelig;rre - filen er for stor. Jeg accepterer kun " .
          $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
          ceil($fil_stoerrelse) . "kb");
  }
  if(function_exists("move_uploaded_file")) {
    move_uploaded_file($fra, $til);
  } else {
    copy($fra, $til);
  } }

$source = "img/$billedinfo";
$target = "img/thumbs/$billedinfo";
$size = 100;
Thumb($source, $target, $size);

$billedinfo

function Thumb($sourcefile, $targetfile, $size) {
    $source_id = imageCreateFromJPEG($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $size/max($source_x,$source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg($target_id,$targetfile, 100);
}


sådan her så vel ????
Avatar billede detox Nybegynder
06. januar 2005 - 22:14 #5
Tja, det ser rigtigt ud, for så vidt din mappe hedder: 'img'. Bortset fra:

$billedinfo

som står helt alene ;o)

Du kunne osse bare bruge:

$target = "img/thumbs/$billedinfo";
Thumb($til, $target, 100);
Avatar billede clausga Nybegynder
06. januar 2005 - 22:15 #6
virker jo helt perfekt, tak for det
Avatar billede detox Nybegynder
06. januar 2005 - 22:16 #7
Velbekommen :O)
Avatar billede clausga Nybegynder
06. januar 2005 - 22:44 #8
<?
$bi = "panasonic-auto.jpg";


$source = "upload/$bi";
$target = "smallpic/$bi";
$size = 75;
Thumb($source, $target, $size);


function Thumb($sourcefile, $targetfile, $size) {
    $source_id = imageCreateFromJPEG($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $size/max($source_x,$source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg($target_id,$targetfile, 100);
}


?>

hmmm nu kan jeg ikke få den til at virke den siger ingen felj...men der kommer ingen lille billede i mappen og den er chmod "777"
Avatar billede detox Nybegynder
06. januar 2005 - 22:59 #9
Jeg kan nu ikke se noget galt i scriptet, hvis stier og billednavn er korrekte. Og du har chmodet til '0777' (ikke 777!)?
Avatar billede clausga Nybegynder
06. januar 2005 - 23:03 #10
Fatal error: Call to undefined function: thumb() in


0777 har jeg adrig hørt om og det kan mit program heller ikke
Avatar billede detox Nybegynder
06. januar 2005 - 23:07 #11
Ok, troede det var php's chmod(). Mht din fejlmelding kan du prøve at definere funktionen først i dit script (inden du kalder den) og husk evt. forskel på små og store bogstaver, altså: Thumb().
Avatar billede clausga Nybegynder
06. januar 2005 - 23:10 #12
er det ikke det jeg gør ?
Avatar billede detox Nybegynder
06. januar 2005 - 23:10 #13
Ved nærmere eftertanke er der IKKE forskel på små og store bogstaver i funktionsnavne, men de skal defineres inden brug i php 3.
Avatar billede detox Nybegynder
06. januar 2005 - 23:11 #14
Jo, det ser som sagt rigtigt ud. Jeg kan ikke se nogen fejl i dit eksempel.
Avatar billede detox Nybegynder
06. januar 2005 - 23:26 #15
Jeg har testet dit eksempel på mit webhotel og det virker upåklageligt.
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