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?
Annonceindlæg fra Computerworld
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!
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 />";
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); ?>
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?
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.
Vi tilbyder markedets bedste kurser inden for webudvikling