Avatar billede _k Nybegynder
20. maj 2005 - 12:02 Der er 1 løsning

Gemme skaleret jpeg

Jeg har på det groveste planket et script fra denne kategori. Det resizer et uploadet billede og gemmer det efterfølgende i en undermappe. Det virker sådan set ok, problemet er bare, at det billede der bliver spyttet ud er ulæseligt for alle mine billedbehandlingsprogrammer samt browseren (billedet eksisterer og fylder et antal kb). Nogen der kan lure hvad der går galt?


<?php
//Upload functions START

function Thumb($sourcefile, $size) {
    echo 'Thump-funktionen er kaldt';
    $ext = pathinfo($_FILES["upfile"]["name"]);
    if (strtolower($ext["extension"]) == "png") {
        $im = imageCreateFromPNG($sourcefile);
    } elseif (strtolower($ext["extension"]) == "jpeg" || strtolower($ext["extension"]) == "jpg") {
        $im = imageCreateFromJPEG($sourcefile);
    }
    $source_x = imagesx($im);
    $source_y = imagesy($im);
    $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);
    echo '<p>imagecreatetruecolor'.$dest_x.','.$dest_y.'<p>';
    imagecopyresampled($target_id,$im,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    echo '<p>imagecopyresampled('.$target_id.','.$im.',0,0,0,0,'.$dest_x.','.$dest_y.','.$source_x.','.$source_y.')<p>';
   
    if (strtolower($ext["extension"]) == "png") {
        imagePNG($target_id, $sourcefile);
        echo '<p>det var en png';
    } elseif (strtolower($ext["extension"]) == "jpeg" || strtolower($ext["extension"]) == "jpg") {
        echo '<p>det var en jpg: '.$sourcefile.'<p>';
        imageJPEG($target_id, $sourcefile, 100);
    }
}

function tjektype($type) {
    $tilladt = array('image/x-png', 'image/png', 'image/pjpeg', 'image/jpeg');
    if(!in_array($type, $tilladt)) {
        return false;
    }else{
        return true;
    }
}

function tjekfil($filnavn) {
    $i = 0;
    $arr = explode(".", $filnavn);
    $ext = array_pop($arr);
    $navn = implode(".", $arr);
    while (is_file($filnavn)) {
        $i++;
        $filnavn = $navn . "." . sprintf("%03u", $i) . "." . $ext;
    }
    return $filnavn;
}
//UPLOAD Functions END

//Så har jeg noget mysql... noge her.

//UPLOAD START
$uploaddir = $_SERVER["DOCUMENT_ROOT"] ."/test/pics/";
$maxsize = 150; //pixels (width)

if (isset($_FILES["upfile"])) {
    $source = $_FILES['upfile']['tmp_name'];
        if (is_uploaded_file($source)) {
            if (tjektype($_FILES['upfile']['type'])) {
                $dest = $uploaddir . $_FILES['upfile']['name'];
                $dest = tjekfil($dest);
                      if (move_uploaded_file($source, $dest)) {
                        thumb($dest,$maxsize,$maxsize);
                        echo "Picture uploaded!";
                    } else {
                        echo "Picture not uploaded!";
                    }
            } else {
            echo "This type of file can not be uploaded!";
            }
        } else {
        echo "Error. Contact the webmaster!";
        }
}

//Upload script END

?>
Avatar billede _k Nybegynder
14. juni 2005 - 10:42 #1
lukker
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

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