Avatar billede darkstylerdk Nybegynder
18. november 2008 - 15:33 Der er 10 kommentarer og
1 løsning

Resize-tilføjelse til upload-script

Hej allesammen. Jeg benytter et billed-uploadscript (som en del af et nyhedssystem), men vil gerne have det tilpasset således at billederne i upload-processen 're-size's. Dette har jeg forsøg mig med ved at implementere dettescript:
http://www.4wordsystems.com/php_image_resize.php
Dog uden held...

Jeg ville gerne have en til at tilføje funktionen til min kode - som herefter følger:


<?php
$title = 'Bog';
include('bogheader.php');
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../css/main.css">
<script language="JavaScript" type="text/javascript" src="js/ajax_captcha.js"></script>

</head>

<h3>Opret bog</h3>

<form id="frmCaptcha" name="frmCaptcha" action="database-admin/cobogsalgform.handle.php" method="post" enctype="multipart/form-data">


<input type="hidden" name="referer" value="post_cokboeger">

<div class="frmobj">Bogens navn</div> <input type="text" name="bognavn" style="width: 300px"><br>

<div class="frmobj">Billede</div> <input type="file" name="image" style="width: 305px"><br>

<div class="frmobj">Beskrivelse af bogen</div>
<textarea name="bogbeskrivelse" rows="10" cols="0" style="width: 300px"></textarea><br><br>
<input type="submit" value="Send forslag">
</form>
<?php
include('bogfooter.php');
?>



deruover får i lige koden fra cobogsalgform.handle.php:

<?php
session_start();

include('../inc.coboegerforslagconfig.php');

if ($_POST['referer'] == 'post_coboeger') {
    if ($_FILES['image']['name'] != '') {
        $image = time().substr($_FILES['image']['name'],strrpos($_FILES['image']['name'],'.'));
        move_uploaded_file($_FILES['image']['tmp_name'], '../files/'.$image);
    } elseif ($_POST['standard'] != '') {
        $image = $_POST['standard'];
    } else {
        $image = '';
    }
    mysql_query("INSERT INTO coboeger VALUES ('','".$_POST['bognavn']."','".$_POST['bogudgave']."','".$_POST['bognypris']."','".$_POST['bogforfatter']."','".$_POST['bogforlag']."','".$_POST['bogstand']."','".$_POST['bogpris']."','".$_POST['saelgernavn']."','".$_POST['saelgermail']."','".$_POST['saelgertlf']."','".$image."',now(),'".$_POST['bogbeskrivelse']."')") or die(mysql_error());
    header("Location: ../index.php");
}

if ($_POST['referer'] == 'upload') {
    for ($i=0;$i<count($_FILES['file']['name']);$i++) {
        if ($_FILES['file']['name'][$i] != '') {
            move_uploaded_file($_FILES['file']['tmp_name'][$i], '../files/'.$_FILES['file']['name'][$i]);
        }
    }
    header("Location: ../bogmarked.php");
}
?>



Og sidst inc-filen:
<?php
/* Indstillinger : database */
$cfg['mysql']['host'] = 'XXXX'; // Host til database
$cfg['mysql']['username'] = 'XXXX'; // Brugernavn til database
$cfg['mysql']['password'] = 'XXXX'; // Kodeord til database
$cfg['mysql']['database'] = 'XXXX'; // Database

/* Redigering ikke nødvendig herunder */
mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

$total = mysql_result(mysql_query("SELECT COUNT(*) FROM coboeger"),0);
$offset = isset($_GET['offset']) ? $_GET['offset'] : 0;
/* $start_point = ($offset-($cfg['pages_each_way']*$cfg['limit']) < 0) ? 0 : $offset-($cfg['pages_each_way']*$cfg['limit']);
$end_point = ($offset+($cfg['pages_each_way']*$cfg['limit']) > $total) ? $total : $offset+($cfg['pages_each_way']*$cfg['limit']);
$page_number = ($start_point/$cfg['limit'])+1; */
?>






Mvh
Avatar billede jakobdo Ekspert
18. november 2008 - 19:13 #1
Kan du ikke udskifte move_uploaded_file() med denne funktion: http://www.eksperten.dk/artikler/1130
Avatar billede darkstylerdk Nybegynder
18. november 2008 - 20:56 #2
har prøvet at sætte det ind.


Gider du skrive koden ind konkret?
Avatar billede jakobdo Ekspert
18. november 2008 - 21:04 #3
Ret linjen:

move_uploaded_file($_FILES['image']['tmp_name'], '../files/'.$image);

til:

resize($_FILES['image']['tmp_name'], '../files/'.$image , 200, 200); //Eller hvilken størrelse du ønsker.
Avatar billede darkstylerdk Nybegynder
18. november 2008 - 21:25 #4
Nu har jeg prøvet at rette i filen.Kan det passe at den skal se sådan ud:




<?php
session_start();

include('../inc.coboegerforslagconfig.php');



function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
  $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      $srcim = imagecreatefromjpeg( $filename );
      break;
    case 'gif':
      $srcim = imagecreatefromgif( $filename );
      break;
    case 'png':
      $srcim = imagecreatefrompng( $filename );
      break;
    default:
      return false;
  }
  $ow = imagesx( $srcim );
  $oh = imagesy( $srcim );
  $wscale = $maxw / $ow;
  $hscale = $maxh / $oh;
  $scale = min( $hscale, $wscale );
  $nw = round( $ow * $scale, 0 );
  $nh = round( $oh * $scale, 0 );
  $dstim = imagecreatetruecolor( $nw, $nh );
  imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      imagejpeg( $dstim, $newfilename, $quality );
      break;
    case 'gif':
      imagegif( $dstim, $newfilename );
      break;
    case 'png':
      $png_q = floor( abs( $quality / 10 - 9.9 ) );
      imagepng( $dstim, $newfilename, $png_q );
      break;
    default:
      return false;
  }
  imagedestroy( $dstim );
  imagedestroy( $srcim );
  return file_exists($newfilename);
}





if ($_POST['referer'] == 'post_coboeger') {
    if ($_FILES['image']['name'] != '') {
        $image = time().substr($_FILES['image']['name'],strrpos($_FILES['image']['name'],'.'));
        resize($_FILES['image']['tmp_name'], '../files/'.$image , 200, 200);
    } elseif ($_POST['standard'] != '') {
        $image = $_POST['standard'];
    } else {
        $image = '';
    }
    mysql_query("INSERT INTO coboeger VALUES ('','".$_POST['bognavn']."','".$_POST['bogudgave']."','".$_POST['bognypris']."','".$_POST['bogforfatter']."','".$_POST['bogforlag']."','".$_POST['bogstand']."','".$_POST['bogpris']."','".$_POST['saelgernavn']."','".$_POST['saelgermail']."','".$_POST['saelgertlf']."','".$image."',now(),'".$_POST['bogbeskrivelse']."')") or die(mysql_error());
    header("Location: ../index.php");
}

if ($_POST['referer'] == 'upload') {
    for ($i=0;$i<count($_FILES['file']['name']);$i++) {
        if ($_FILES['file']['name'][$i] != '') {
            move_uploaded_file($_FILES['file']['tmp_name'][$i], '../files/'.$_FILES['file']['name'][$i]);


        }
    }
    header("Location: ../bogmarked.php");
}
?>





?




Hvis ikke må du meget gerne ændre det :)
Avatar billede darkstylerdk Nybegynder
18. november 2008 - 21:30 #5
Den indsætter pænt billedets navn i DB, men der sker desværre ingen upload til serveren
Avatar billede jakobdo Ekspert
18. november 2008 - 21:33 #6
Så prøv evt. at kald resize() efter move_uploaded_file()
Avatar billede darkstylerdk Nybegynder
18. november 2008 - 21:50 #7
Nu har jeg prøvet at gøre som (jeg tror) du siger:





<?php
session_start();

include('../inc.coboegerforslagconfig.php');


function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
  $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      $srcim = imagecreatefromjpeg( $filename );
      break;
    case 'gif':
      $srcim = imagecreatefromgif( $filename );
      break;
    case 'png':
      $srcim = imagecreatefrompng( $filename );
      break;
    default:
      return false;
  }
  $ow = imagesx( $srcim );
  $oh = imagesy( $srcim );
  $wscale = $maxw / $ow;
  $hscale = $maxh / $oh;
  $scale = min( $hscale, $wscale );
  $nw = round( $ow * $scale, 0 );
  $nh = round( $oh * $scale, 0 );
  $dstim = imagecreatetruecolor( $nw, $nh );
  imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
  switch($ext)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      imagejpeg( $dstim, $newfilename, $quality );
      break;
    case 'gif':
      imagegif( $dstim, $newfilename );
      break;
    case 'png':
      $png_q = floor( abs( $quality / 10 - 9.9 ) );
      imagepng( $dstim, $newfilename, $png_q );
      break;
    default:
      return false;
  }
  imagedestroy( $dstim );
  imagedestroy( $srcim );
  return file_exists($newfilename);
}


if ($_POST['referer'] == 'post_coboeger') {
    if ($_FILES['image']['name'] != '') {
        $image = time().substr($_FILES['image']['name'],strrpos($_FILES['image']['name'],'.'));
        move_uploaded_file($_FILES['image']['tmp_name'], '../files/'.$image);
    resize($_FILES['image']['tmp_name'], '../files/'.$image , 200, 200);
    } elseif ($_POST['standard'] != '') {
        $image = $_POST['standard'];
    } else {
        $image = '';
    }
    mysql_query("INSERT INTO coboeger VALUES ('','".$_POST['bognavn']."','".$_POST['bogudgave']."','".$_POST['bognypris']."','".$_POST['bogforfatter']."','".$_POST['bogforlag']."','".$_POST['bogstand']."','".$_POST['bogpris']."','".$_POST['saelgernavn']."','".$_POST['saelgermail']."','".$_POST['saelgertlf']."','".$image."',now(),'".$_POST['bogbeskrivelse']."')") or die(mysql_error());
    header("Location: ../index.php");
}

if ($_POST['referer'] == 'upload') {
    for ($i=0;$i<count($_FILES['file']['name']);$i++) {
        if ($_FILES['file']['name'][$i] != '') {
            move_uploaded_file($_FILES['file']['tmp_name'][$i], '../files/'.$_FILES['file']['name'][$i]);
        }
    }
    header("Location: ../bogmarked.php");
}
?>




Den uploader fint, men uden resize
Avatar billede jakobdo Ekspert
18. november 2008 - 21:55 #8
Ret lige:
move_uploaded_file($_FILES['image']['tmp_name'], '../files/'.$image);
    resize($_FILES['image']['tmp_name'], '../files/'.$image , 200, 200);
til:
move_uploaded_file($_FILES['image']['tmp_name'], '../files/'.$image);
    resize('../files/'.$image, '../files/'.$image , 200, 200);

og se om det virker.
Avatar billede darkstylerdk Nybegynder
18. november 2008 - 22:03 #9
YES!

Tusind tak. "NU er jeg glad"...
Hvordan du kunne 'lege' dig frem til det rigtige, hehe
Svar venligst - points er fortjent
Avatar billede jakobdo Ekspert
19. november 2008 - 07:59 #10
Så får du et svar.
Avatar billede jakobdo Ekspert
19. november 2008 - 12:03 #11
Takker for point.
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