Avatar billede riefart Seniormester
17. december 2014 - 18:05 Der er 7 kommentarer og
1 løsning

Oprettelse af thumbnails

Jeg har brug for enten:
1) et php-script som efter opload af et billede til server (har styr på) og filnavn til sql-database(har styr på) opretter en thumbnail som efterfølgende kan oploades til en særskilt mappe på serveren, eller

2) et script, som udfra billedets kildefil automatisk generer en thumbnail til udskrivning på hjemmesiden, når brugerens data indlæses.
På hjemmesiden kan brugerne oprette en profil, hvor thumbnail-billedet skal vises.
Kan nogen hjælpe?
Avatar billede olsensweb.dk Ekspert
17. december 2014 - 18:21 #1
prøv at se hvad wideimage kan gøre for dig, nærmere betegnet resize
Avatar billede moddi100 Seniormester
17. december 2014 - 20:19 #2
Du behøver slet ikke nogle eksterne libraries til det. PHP's indbyggede GD lib, kan sagtens klare skærene. Eksemplet herunder stammer fra kommentarerne i manualen, tilpasset herfra, så den også gemmer/udskriver billedet.


/**
* Resize an image and keep the proportions
* @author Allison Beckwith <allison@planetargon.com>
* @param string $filename
* @param string $new_filename
* @param integer $max_width
* @param integer $max_height
* @return true
*/
function resizeImage($filename, $new_filename, $max_width, $max_height)
{
    list($orig_width, $orig_height) = getimagesize($filename);

    $width = $orig_width;
    $height = $orig_height;

    # taller
    if ($height > $max_height) {
        $width = ($max_height / $height) * $width;
        $height = $max_height;
    }

    # wider
    if ($width > $max_width) {
        $height = ($max_width / $width) * $height;
        $width = $max_width;
    }

    $image_p = imagecreatetruecolor($width, $height);

    $image = imagecreatefromjpeg($filename);

    imagecopyresampled($image_p, $image, 0, 0, 0, 0,
                                    $width, $height, $orig_width, $orig_height);

    // Gem i fil
    imagepng($image_p, $new_filename);

    // Udskriv til browseren
    #header('Content-Type: image/png');
    #imagepng($image_p);

    imagedestroy($image_p);
    return true;
}


Link til manualen:
http://php.net/manual/en/function.imagecopyresized.php#50432
Avatar billede repox Seniormester
17. december 2014 - 23:51 #3
GD Lib er er eksternt bibliotek.
Avatar billede riefart Seniormester
18. december 2014 - 17:47 #4
ronols:
Det ser ganske enkelt ud i brug. Kan du hjælpe mig lidt videre. Hvordan kommer jeg i gang med at bruge det? Hvad skal downloades og installeres osv.
Avatar billede olsensweb.dk Ekspert
18. december 2014 - 22:11 #5
du kan downloade widideimage  her , du kan nøjes med wideimage-11.02.19-lib.zip men jeg vælger at tage hele pakken wideimage-11.02.19-full.zip
og ja den kræver  It requires PHP 5.2+ with GD2

her er et komplet eks der først scalerer det ned til det man accepterer til stort format, og laver derefter en thumpnail

læg lib folderen et centralt sted, du bare kan referarer til, jeg har valgt  /include/php/wideimage/

     
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/include/php/wideimage/WideImage.php");
if (isset($_POST['Submitted'])) {
    $img_file_arr = $_FILES['img_file_arr'];
    if ($img_file_arr['error'] == 0) {
        $timestamp = str_replace('.', '', microtime(true));
        $image_name = $timestamp . "_" . $img_file_arr['name'];
        $wi_img_fuld = Wideimage::load($img_file_arr['tmp_name']);
        $wi_img_fuld = $wi_img_fuld->resizeDown(300);
        $wi_img_fuld->saveToFile("images/" . $image_name);
        // $image_id = image_Create($conn, $image_name); // indsætter billed navn i databasen
        $wi_img_thumb = $wi_img_fuld->resizeDown(50);
        $wi_img_thumb->saveToFile("images/" . "thump_" . $image_name);
    }
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
            <input type="file" name="img_file_arr" ><br>
            <input name="Submitted" value="upload alle" type="submit">
        </form>
    </body>
</html>
Avatar billede riefart Seniormester
20. december 2014 - 22:26 #6
Det virker bare helt perfekt.
Tak for hjælpen ronols. Smid et svar.
Avatar billede riefart Seniormester
21. december 2014 - 09:04 #7
Lige en enkelt:
Kan man indstille hvilke filformater, som accepteres?
Eller skal jeg køre en preg_match() på billedet?
Avatar billede olsensweb.dk Ekspert
21. december 2014 - 12:29 #8
Kan man indstille hvilke filformater, som accepteres?
ikke mig bekendt, jeg ville gøre det extern

det er disse formater der er understøttet af wideimage
http://wideimage.sourceforge.net/documentation/supported-formats/
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