12. marts 2003 - 08:47Der er
13 kommentarer og 1 løsning
Thumbnail - fra billede i DB
Jeg har flg kodesnips - billede sættes ind i DB og billedet kan vises igen, men jeg ville gerne have lavet noget thumbnail enten ved upload af billedet og så gemme thumb i DB eller generere en thumb når billedet hives ud af DB igen - hvordan gør jeg - jeg har rodet lidt med GD lib, men kan ikke få det til at fungere?
################################################# /* action.php - filen der putter billedet i DB */ #################################################
$filename=$_FILES['pic']['tmp_name']; //Den midlertidige fil der indeholder billedfilen
//info om filtype $pictype=addslashes($_FILES['pic']['type']);
mysql_query("INSERT INTO billede (beskrivelse,billede,width,height,filetype) values ('Et billede','$data','$width','$height','$pictype')") or die (mysql_error()); } else { echo "Possible file upload attack. Filename: " . $_FILES['pic']['name']; }
############################################ /* getid.php - finder den enkelte billede */ ############################################
$picid=addslashes($_GET['id']);
$result=@mysql_query("select billede,filetype from billede where id='$picid'"); $billede=@mysql_result($result,0,"billede"); $type =@mysql_result($result,0,"filetype");
$res=mysql_query("select id,width,height from billede") or die (mysql_error()); while ($row=mysql_fetch_array($res)) { print "<img src=\"getid.php?id=$row[id]\" width=\"$row[width]\" height=\"$row[height]\">"; }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
xyborx>> jeg har "leget" lidt med dit script på http://www.xyborx.dk/image.php, men jeg kan ikke hitte ud af hvordan jeg kan bruge det i fiorbindelse med det script jeg har ??
Mit script fungerer kun med filer der ligger på harddisken. Dvs for at bruge det, er du nødt til at hente billedet fra databasen, gemme det (midlertidigt) på harddisken, og så køre mit script. Måske skulle jeg indbygge en database->thumbnail del i næste version. :)
Måske noget i retning af det her kan bruges? $picid=addslashes($_GET['id']);
$result=@mysql_query("select billede,filetype from billede where id='$picid'"); $billede=@mysql_result($result,0,"billede"); $type =@mysql_result($result,0,"filetype");
ja, men det kræver vel skrive rettigheder til disken ik? - det vil jeg helst undgå, men hvis man kan generere det i forbindelse med upload ville det være helt fint - jeg er bare ikke lige så skarp til det der GDlib (startede i går ;o])
Måske kan imagecreatefromstring funktionen bruges? (http://www.php.net/manual/en/function.imagecreatefromstring.php) Det må testes når jeg får tid.. :D Ellers er der nok ikke andet at gøre, end at bruge midlertidige filer (tror i øvrigt ikke at mit eksempel ovenfor udgør nogen risiko. tempnam funktionen opretter en midlertidig fil med et unikt navn, og man risikerer derfor ikke at få overskrevet eksisterende filer).
Så vidt jeg ved har alle læse+skrive rettigheder til /tmp (hvis vi snakker Linux og lignende), så chmod er ikke nødvendig.
Jeg kunne også tænke mig at døgnet blev længere.. Måske skulle man oprette et spørgsmål her, og spørge hvor i opsætningen af Jorden man kan forlænge døgnet? ;D
Om du resizer ved upload og gemmer både original og thumb, eller om du generer thumb ved download er ligemeget. Det kræver alligevel at billedet lige kommer en tur ned på harddisken (i hvertfald med min nuværende viden om image funktionerne).
jeg har testet det du har lavet, men det virker ikke i stedet har jeg fundet noget på php.net og flette det ind i mit eget, som benytter billedet i Db til at generer en thumbnail - det må jeg nok kunne bruge
$height = 200; $width = 200;
$picid=addslashes($_GET['id']);
$result=mysql_query("select billede from billede where id='$picid'") or die (mysql_error()); while($row = mysql_fetch_array($result)){ header('Content-Type: image/jpeg');
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.