Avatar billede ra__mus Nybegynder
13. september 2005 - 23:43 Der er 26 kommentarer og
1 løsning

billedbehandling to gange i script

Hej.
Jeg skal 2 gange i samme script lave noget billedreduktion, og det virker ikke efter hensigten.
STORTBILLEDE får den størrelse som lilleBILLEDE skulle have haft, og lilleBILLEDE bliver slet ikke dannet ?????
Hvad er galt ???????

Koden ser således ud :

if (!empty($_FILES['upfil']['name'])) {
   
$konfiguration["upload_bibliotek"] = "./test";

/* Hvor flytter vi fra og til */
    $fra = $_FILES["upfil"]["tmp_name"];
   
   
   
    $til = $konfiguration["upload_bibliotek"] . "/" .$billede; 

    move_uploaded_file($fra, $til);
 
    $st = filesize($til);

//*******STORTBILLEDE************* 
// Set a maximum height and width
    $width = 600;
    $height = $width;

    // Get new dimensions
    list($width_orig, $height_orig) = getimagesize($til);

    if ($width_orig > $width OR $height_orig > $height) {
      if ($width && ($width_orig < $height_orig)) {
        $width = ($height / $height_orig) * $width_orig;
      } else {
        $height = ($width / $width_orig) * $height_orig;
      }

    // Resample
    $image_p = imagecreatetruecolor($width, $height);
    $image = imagecreatefromjpeg($til);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

    $billede2 = $billede0 . '2' . '.' . 'jpg';
    $billede = basename($billede2);

    // Output
    imagejpeg($image_p, $billede2, 100);
    //unlink($til);


}
//*******DETTE HEROVER ER STORTBILEDE*************
 
//*******DETTE HERUNDER ER lilleBILLEDE************* 
// Set a maximum height and width
    $width1 = 50;
    $height1 = $width1;

    // Get new dimensions
    list($width_orig, $height_orig) = getimagesize($til);

    if ($width_orig > $width1 OR $height_orig > $height1) {
      if ($width1 && ($width_orig < $height_orig)) {
        $width1 = ($height1 / $height_orig) * $width_orig;
      } else {
        $height1 = ($width1 / $width_orig) * $height_orig;
      }

    // Resample
    $image_p1 = imagecreatetruecolor($width1, $height1);
    $image1 = imagecreatefromjpeg($til);
    imagecopyresampled($image_p1, $image1, 0, 0, 0, 0, $width1, $height1, $width_orig, $height_orig);

    $billede5 = $billede0 . '2' . '.' . 'jpg';
    $billede11 = basename($billede5);

    // Output
    imagejpeg($image_p1, $billede5, 100);
    //unlink($til);


}
//*******DETTE HEROVER ER lillebillede*************
Avatar billede ra__mus Nybegynder
14. september 2005 - 01:28 #1
Ingen natteravne med ekspertise i PHP ??
Avatar billede jakobdo Ekspert
14. september 2005 - 08:29 #2
Hvad med denne løsning:

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = NULL;
   
    list($width, $height, $filetype, $attr) = getimagesize($filename);

    switch($filetype)
    {
        case 1:
            $srcim = imagecreatefromgif( $filename );
            break;
        case 2:
            $srcim = imagecreatefromjpeg( $filename );
            break;
    }
   
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $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($filetype)
    {
        case 1:
            imagegif(  $dstim, $newfilename);
            break;
        case 2:
            imagejpeg( $dstim, $newfilename, 85 );
            break;
    }
   
    imagedestroy( $dstim );
    imagedestroy( $srcim );
   
    return file_exists($newfilename);
}

if (!empty($_FILES['upfil']['name']))
{
    $konfiguration["upload_bibliotek"] = "./test";

    /* Hvor flytter vi fra og til */
  $fra = $_FILES["upfil"]["tmp_name"];
    $til = $konfiguration["upload_bibliotek"] . "/" .$billede;

    move_uploaded_file($fra, $til);

    $st = filesize($til);

    //*******STORTBILLEDE*************
    // Set a maximum height and width
    $max = 600;

    $billede2 = $billede0 . '2' . '.' . 'jpg';
    $billede = basename($billede2);

    resize( $til, $billede, $max, $max);

    //*******DETTE HEROVER ER STORTBILEDE*************

    //*******DETTE HERUNDER ER lilleBILLEDE*************
    // Set a maximum height and width
  $max = 50;

    $billede5 = $billede0 . '2' . '.' . 'jpg';
    $billede = basename($billede5);

    resize( $til, $billede, $max, $max);
}
//*******DETTE HEROVER ER lillebillede*************
Avatar billede ra__mus Nybegynder
14. september 2005 - 12:46 #3
øh hvad bliver hhv stortbillede og lillebillede gemt under ????
Avatar billede jakobdo Ekspert
14. september 2005 - 12:59 #4
Det bliver gemt i resize som $billede
Og billede sætter du: $billede = basename($billede2); og $billede = basename($billede5);
Avatar billede ra__mus Nybegynder
14. september 2005 - 13:19 #5
Ja men jeg skal jo gemme begge billeder i databasen, og så kan de jo ikke begge hedde $billede ??
Avatar billede jakobdo Ekspert
14. september 2005 - 13:22 #6
Så ret:
$billede = basename($billede2);
resize( $til, $billede, $max, $max);
Til:
$billede12 = basename($billede2);
resize( $til, $billede12, $max, $max);
og
$billede = basename($billede5);
resize( $til, $billede, $max, $max);
Til:
$billede15 = basename($billede5);
resize( $til, $billed15e, $max, $max);
Avatar billede ra__mus Nybegynder
14. september 2005 - 13:30 #7
$billede15 = basename($billede5);
resize( $til, $billed15e, $max, $max);
skal vel være ???
$billede15 = basename($billede5);
resize( $til, $billed15, $max, $max);
Avatar billede jakobdo Ekspert
14. september 2005 - 13:44 #8
$billed15e skal rettes til: $billede15
Trykfejl.
Avatar billede jakobdo Ekspert
14. september 2005 - 13:44 #9
En helt anden ting, ved du hvad der er der sker i den kode der?
Avatar billede ra__mus Nybegynder
14. september 2005 - 14:02 #10
I hilken af koderne ??
Avatar billede ra__mus Nybegynder
14. september 2005 - 14:03 #11
I hvilken af koderne ??
Avatar billede jakobdo Ekspert
14. september 2005 - 14:13 #12
I min kode?
I din kode?
Avatar billede ra__mus Nybegynder
14. september 2005 - 14:23 #13
ja i min gør jeg.
Billederne reduceres i størrelsen !
Din vil jeg gå udfra gør det samme.
Hvorfor skulle jeg ikke forstså min egen kode ??
Fostår bare ikke at man ikke kan reducere to billeder i samme script..
Avatar billede jakobdo Ekspert
14. september 2005 - 14:31 #14
Det kan man også godt!
funktionen resize() virker på denne måde:
resize($originalFil,$nyFil,$maxWidth,$maxHeight)
og den kan du jo så kalde flere gange på $originalFil
Avatar billede ra__mus Nybegynder
14. september 2005 - 15:06 #15
ja okay men i mit eget script kan jeg ikke..
Avatar billede jakobdo Ekspert
14. september 2005 - 15:07 #16
Jeg må lige kigge på dit script senere, hvis altså ikke du kan bruge min løsning.
Avatar billede ra__mus Nybegynder
14. september 2005 - 15:35 #17
Fint hvis du gider det, for jeg ku godt tænke mig at mit kom til at virke..
Avatar billede jakobdo Ekspert
14. september 2005 - 21:28 #18
Så har jeg rodet med din kode, og denne virker hos mig:

<?php

/*********************\
* Checker PHP-version *
\*********************/
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4)
{
    die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}


/********************************************\
* Udligner forskellene mellem 4.1.x og 4.0.x *
* Bemaerk, at disse ikke er "superglobals"  *
\********************************************/
if($minor < 1)
{
    $_FILES = $HTTP_POST_FILES;
    $_POST = $HTTP_POST_VARS;
    $_SERVER = $HTTP_SERVER_VARS;
}

echo "<pre>";
print_r($_FILES);
echo "</pre>";

if (!empty($_FILES['upfil']['name']))
{
    $konfiguration["upload_bibliotek"] = "upload";

    /* Hvor flytter vi fra og til */
    $path = getcwd() . "/" . $konfiguration["upload_bibliotek"] . "/";
    $fra = $_FILES["upfil"]["tmp_name"];
    $til = $path . basename($_FILES['upfil']['name']);
   
    move_uploaded_file($fra, $til);
    $billede = basename($_FILES['upfil']['name']);
    $pos = strrpos($billede,".");
    $billede = substr($billede,0,$pos);

    $st = filesize($til);

    //*******STORTBILLEDE*************
    // Set a maximum height and width
    $width = 600;
    $height = $width;

    // Get new dimensions
    list($width_orig, $height_orig) = getimagesize($til);

    if ($width_orig > $width OR $height_orig > $height)
    {
        if ($width && ($width_orig < $height_orig))
        {
            $width = ($height / $height_orig) * $width_orig;
        }
        else
        {
            $height = ($width / $width_orig) * $height_orig;
        }

        // Resample
        $image_p = imagecreatetruecolor($width, $height);
        $image = imagecreatefromjpeg($til);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
       
        $billede2 = $path . $billede . "2.jpg";

    // Output
    imagejpeg($image_p, $billede2, 100);
    //unlink($til);
    }
    //*******DETTE HEROVER ER STORTBILEDE*************

    //*******DETTE HERUNDER ER lilleBILLEDE*************
    // Set a maximum height and width
  $width1 = 50;
  $height1 = $width1;

    // Get new dimensions
    list($width_orig, $height_orig) = getimagesize($til);

    if ($width_orig > $width1 OR $height_orig > $height1)
    {
        if ($width1 && ($width_orig < $height_orig))
        {
            $width1 = ($height1 / $height_orig) * $width_orig;
        }
        else
        {
            $height1 = ($width1 / $width_orig) * $height_orig;
        }

        // Resample
    $image_p1 = imagecreatetruecolor($width1, $height1);
    $image1 = imagecreatefromjpeg($til);
    imagecopyresampled($image_p1, $image1, 0, 0, 0, 0, $width1, $height1, $width_orig, $height_orig);

        $billede5 = $path . $billede . "5.jpg";

    // Output
    imagejpeg($image_p1, $billede5, 100);
    //unlink($til);
    }
    //*******DETTE HEROVER ER lillebillede*************
   
    echo $billede2 . "<br>";
    echo $billede5 . "<br>";
}
else
{
?>

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="1024000" />
    Send this file: <input name="upfil" type="file" />
    <input type="submit" value="Send File" />
</form>

<?
}
?>

PS: Husk at ret upload dir til dit rigtige dir.
Avatar billede ra__mus Nybegynder
14. september 2005 - 23:52 #19
Der er lidt ged i den mht det lille billede. Det er noget med stien tror jeg
Men det skal i samme mappe som det store billede.
Jeg har lige nu :

if (!empty($_FILES['upfil']['name'])) {
   
$konfiguration["upload_bibliotek"] = "./test";

/* Hvor flytter vi fra og til */
    $path = getcwd() . "/" . $konfiguration["upload_bibliotek"] . "/";
    $fra = $_FILES["upfil"]["tmp_name"];
    $til = $konfiguration["upload_bibliotek"] . "/" .$billede; 
    $path = getcwd() . "/" . $konfiguration["upload_bibliotek"] . "/";
    move_uploaded_file($fra, $til);
    //$billede = basename($_FILES['upfil']['name']);
    //$pos = strrpos($billede,".");
    //$billede = substr($billede,0,$pos);

    $st = filesize($til);

//*******DETTE HERUNDER ER NYT_STORTBILLEDE************* 
// Set a maximum height and width
    $width = 600;
    $height = $width;

    // Get new dimensions
    list($width_orig, $height_orig) = getimagesize($til);

    if ($width_orig > $width OR $height_orig > $height) {
      if ($width && ($width_orig < $height_orig)) {
        $width = ($height / $height_orig) * $width_orig;
      } else {
        $height = ($width / $width_orig) * $height_orig;
      }

    // Resample
    $image_p = imagecreatetruecolor($width, $height);
    $image = imagecreatefromjpeg($til);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

    $billede2 = $billede0 . '2' . '.' . 'jpg';
    $billede = basename($billede2);

    // Output
    imagejpeg($image_p, $billede2, 100);
    //unlink($til);


}
//*******DETTE HEROVER ER OGSÅ NYT*************
 
//*******DETTE HERUNDER ER NYT_lilleBILLEDE************* 
// Set a maximum height and width
    $width1 = 50;
    $height1 = $width1;

    // Get new dimensions
    list($width_orig, $height_orig) = getimagesize($til);

    if ($width_orig > $width1 OR $height_orig > $height1) {
      if ($width1 && ($width_orig < $height_orig)) {
        $width1 = ($height1 / $height_orig) * $width_orig;
      } else {
        $height1 = ($width1 / $width_orig) * $height_orig;
      }

    // Resample
    $image_p1 = imagecreatetruecolor($width1, $height1);
    $image1 = imagecreatefromjpeg($til);
    imagecopyresampled($image_p1, $image1, 0, 0, 0, 0, $width1, $height1, $width_orig, $height_orig);

    $billede5 = $path . $billede . "5.jpg";
    $billede11 = basename($billede5);

    // Output
    imagejpeg($image_p1, $billede5, 100);
    //unlink($til);


}
//*******DETTE HEROVER ER OGSÅ NYT*************
Avatar billede ra__mus Nybegynder
15. september 2005 - 00:01 #20
Dette har jeg så lige inden ovenstående kode :

if (preg_match("/\.jpe?g$/i",$files)){ 
       
    $billede0 = tempnam('/var/www/komsikomsa.dk/test/', 'f1_');
   
   
    $billede0b = $billede0 . '.' . 'jpg';
   

    $billede = basename($billede0b);
   
      }
    elseif (preg_match('/\.gif$/i',$files)) {
    $billede0 = tempnam('/var/www/komsikomsa.dk/test/', 'f1_');
    //$billede0 = tempnam('/customers/komsikomsa.dk/komsikomsa.dk/httpd.www/test/', 'f1');
    $billede0b = $billede0 . '.' . 'gif';
    $billede = basename($billede0b);
      }
Avatar billede ra__mus Nybegynder
15. september 2005 - 01:55 #21
øh er lidt i tvivl om hvilke variable jeg skal lægge i databasen ??
Er det $billede2 og $billede5??
Lige nu lægger jeg  $billede og $billede11 i databasen......
Avatar billede jakobdo Ekspert
15. september 2005 - 08:10 #22
Prøv at print: $billede2 og $billede5
Det skulle gerne indeholde fuld sti til billederne.
Avatar billede ra__mus Nybegynder
15. september 2005 - 12:50 #23
okay men stien kender jeg godt.. er mere i tvivl om selve koden mht. hvilken variabel hhv store og lille billede er gemt i.
er det $billede2 og $billede5??
eller  $billede og $billede11 ??
Avatar billede jakobdo Ekspert
15. september 2005 - 13:21 #24
$billede2 = stort!
$billede5 = lille!
Avatar billede ra__mus Nybegynder
23. november 2005 - 12:19 #25
jacobdo
læg et svar..
Avatar billede jakobdo Ekspert
23. november 2005 - 19:05 #26
Svar!
Avatar billede jakobdo Ekspert
22. september 2006 - 10:39 #27
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