Avatar billede stieper Nybegynder
12. oktober 2005 - 17:28 Der er 5 kommentarer og
1 løsning

lave thumbnails med gdlib i Loop fra MySql array

Hej. Nu er jeg nået frem til at kunne lave en thumnail vha.

$image_path = "../upload/upload";
$image_name = $name;

function thumbnail($image_path, $thumb_path, $image_name, $thumb_width)
{
    $src_img = imagecreatefromjpeg("$image_path/$image_name");
    $origw = imagesx($src_img);
    $origh = imagesy($src_img);
    $new_w = $thumb_width;
    $diff = $origw/$new_w;
    $new_h = $new_w;
    $dst_img = imagecreate($new_w,$new_h);
    imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $new_w, $new_h, imagesx($src_img), imagesy($src_img));

    imagejpeg($dst_img, "$thumb_path/thm_$image_name");
    return true;
}
$img = thumbnail("$image_path","$image_path","$image_name","80");

Dog vil jeg gerne have den til at vise thumbnails af alle billeder i min database.
Her er min kode for at "printe" billederne på skærmen i fuld størrelse:

aabn_forbindelse_og_vaelgdb();
$sql = "SELECT * FROM filer order by userid";
$resultat = mysql_query($sql) or die(mysql_error());
//$optaelling = sql_spoerg_og_faa_svar($taeller_sql);
luk_forbindelse();
while($row = mysql_fetch_array($resultat)){

// do some thing here

$id = $row["userid"];
$name = $row["name"];
$descr = $row["descr"];
$type = $row["type"];
$dimension = $row["dimension"];
$image_dir = $row["bill_sti"];



//part 2

print "User Id : $id <br />";
print "Name : $name <br />";
print "Description : $descr <br />";
print "Type : $type<br />";
print "Billedets mål : $dimension <br />";
print "image is <img src='../upload".$image_dir."/".$name."'> <br /><br />";

Men i stedet for print "image is.... vil jeg gerne have den til at vise alle billeder i databasen som thumbnails - er dette muligt?
Avatar billede mikze Nybegynder
12. oktober 2005 - 17:48 #1
<?php

if(isset($_GET["billede"]) && !empty($_GET["billede"]) && file_exists($_GET["billede"])) {

if($_GET["aspect"] == 1) {
    $keepaspect = 1;
}
else {
    $keepaspect = 0;
}


// BREDDEN
// dette er også højden hvis aspect ikke er sat
$thumb_width = 100;

    $src_img = imagecreatefromjpeg("".$_GET["billede"]."");
    $origw = imagesx($src_img);
    $origh = imagesy($src_img);

    if($keepaspect == 1) {
      $kloxirin = $thumb_width/$origw;
      $new_w = $thumb_width;
      $new_h = $origh * $kloxirin;
    }
    else {
      $new_w = $thumb_width;
      $new_h = $thumb_width;
    }
    $dst_img = imagecreate($new_w,$new_h);
    imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $new_w, $new_h, imagesx($src_img), imagesy($src_img));

    imagejpeg("".$dst_img."");


?>


Overstående sætter du ind i en fil, og kalder den for: makethumbnail.php

Så laver du dette i din anden fil:



print "Thumbnail: <img src='makethumbnail.php?aspect=1&billede=../upload".$image_dir."/".$name."'> <br /><br />";



Hvis du bruger overstående linje, så vil billedet beholde sin aspect-ratio, men hvis du vil have at billedet skal være 100 i BÅDE bredde og højde bruger du denne linje istedet:



print "Thumbnail: <img src='makethumbnail.php?billede=../upload".$image_dir."/".$name."'> <br /><br />";











OBS: Jeg har ikke testet scriptet selv endnu!
Avatar billede stieper Nybegynder
12. oktober 2005 - 17:54 #2
Ved at gøre det, får jeg ingen billeder frem..
hvert billede står med et link under properties som følger:

http://localhost/webmaleri/all/makethumbnail.php?billede=../upload./upload/navn.jpg
Avatar billede mikze Nybegynder
12. oktober 2005 - 17:57 #3
Jeg kan ikke se filer på din localhost.. Men prøv føldende istedet:






<?php

if(isset($_GET["billede"]) && !empty($_GET["billede"]) && file_exists($_GET["billede"])) {

if($_GET["aspect"] == 1) {
    $keepaspect = 1;
}
else {
    $keepaspect = 0;
}


// BREDDEN
// dette er også højden hvis aspect ikke er sat
$thumb_width = 100;

    $src_img = imagecreatefromjpeg("".$_GET["billede"]."");
    $origw = imagesx($src_img);
    $origh = imagesy($src_img);

    if($keepaspect == 1) {
      $kloxirin = $thumb_width/$origw;
      $new_w = $thumb_width;
      $new_h = $origh * $kloxirin;
    }
    else {
      $new_w = $thumb_width;
      $new_h = $thumb_width;
    }
    $dst_img = imagecreate($new_w,$new_h);
    imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $new_w, $new_h, imagesx($src_img), imagesy($src_img));

    imagejpeg("../".$dst_img."");


?>












Og så ret din linje til:

print "Thumbnail: <img src='makethumbnail.php?billede=upload".$image_dir."/".$name."'> <br /><br />";
Avatar billede mikze Nybegynder
12. oktober 2005 - 18:12 #4
Brug denne kode, og ret din linje til hvad der står i overstående kommentar:



<?php

if(isset($_GET["billede"]) && !empty($_GET["billede"]) && file_exists($_GET["billede"])) {

if($_GET["aspect"] == 1) {
    $keepaspect = 1;
}
else {
    $keepaspect = 0;
}


// BREDDEN
// dette er også højden hvis aspect ikke er sat
$thumb_width = 100;

    $src_img = imagecreatefromjpeg("../".$_GET["billede"]."");
    $origw = imagesx($src_img);
    $origh = imagesy($src_img);

    if($keepaspect == 1) {
      $kloxirin = $thumb_width/$origw;
      $new_w = $thumb_width;
      $new_h = $origh * $kloxirin;
    }
    else {
      $new_w = $thumb_width;
      $new_h = $thumb_width;
    }
    $dst_img = imagecreate($new_w,$new_h);
    imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $new_w, $new_h, imagesx($src_img), imagesy($src_img));

    imagejpeg($dst_img);


?>
Avatar billede stieper Nybegynder
12. oktober 2005 - 18:54 #5
Hey igen.
Skulle lige se 1 halvleg i bold ;-)

Har prøvet med den nye kode, men d virker stadig ik..
Struktur er sådan her:
-----localhost ---

----webmaleri/all ---- her ligger funktionen gbog som skal vise thumbnails

----webmaleri/upload/upload/ -- her ligger billederne

link i billederne efter ovenstående kodeopdatering er:

http://localhost/webmaleri/all/makethumbnail.php?billede=upload./upload/Alt_til_bilen.jpg

Og den referer derfor ikke til upload/upload hvor billedet ligger - men det skal den måske heller ikke?
Avatar billede stieper Nybegynder
13. oktober 2005 - 16:20 #6
Har droppet det, og har lavet en listevisning i stedet når alle billeder i galleriet skal vises. Derimod laver jeg en funktion der automatisk laver et thumbnail af billedet, når det uploades, som jeg så kan bruge i nogle andre sammenhænge.
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