Avatar billede mickiii Nybegynder
10. september 2004 - 00:11 Der er 6 kommentarer og
1 løsning

Generer thumb og læg i sql (PHP)

Jeg har følgende script, som ligger et billede ind i mysql, men vil nu også gerne have selvsamme billede resizet og gemt i endnu en kolonne i min sql, således at der ligger "standard" billedet, og en thumb version:

<?
include 'db.php';

session_start();
$brugernavn = $_SESSION['username'];
$beskrivelse = $_REQUEST['beskrivelse'];
$billede = $_REQUEST['billede'];
$filename = $HTTP_POST_FILES['billede']['tmp_name'];
$galleri_id = "galleri";

print "$filename<br>";

if (is_uploaded_file($filename)) {
$data = addslashes(fread(fopen($filename,"r"),filesize($filename)));
$a=getimagesize($filename);
$width=$a[0]; $height=$a[1];
$type=addslashes($_FILES['billede']['type']);

mysql_query("INSERT INTO billeder (galleri_id, brugernavn, beskrivelse, filtype, filnavn, fildata, width, height)
VALUES ('$galleri_id','$brugernavn','$beskrivelse','$type','$filename','$data','$width','$height')") or die(mysql_error());

} else {
echo "Fejl i upload. Filenavn: " . $HTTP_POST_FILES['billede']['name'];
}
?>

Jeg har hele aftenen leget med funktionen imagecopyresized, men jeg kan simpelthen ikke få det at virke - får konstant fejlen: "...not a valid image resource.. and so on".

Er der ikke en her der er flink at hjælpe mig lidt på vej, alternativt støttet af et eksempel?

På forhånd tak
Avatar billede Slettet bruger
10. september 2004 - 00:26 #1
Jeg har en gang lavet sådan et script, så jeg kan måske lidt groft vise dig hvordan jeg gjorde.

Dette script, lister alle filer i et dir (hvor jeg så kun lagde billedfiler), og lavede dem om til thumbnails af proportionerne 100x70, og kalder kopierne af billederne for thumb_*.

Derefter kørte jeg listingen igen, og lagde hele indholdet af filer og thumbnails i en database - men dette script er temmelig personificeret og vil nok næppe hjælpe uden lidt 'beskæring' :)

Men du kan lige se dette, og se om du får noget ud af det.. (og om jeg har husket det hele.. :)

http://www.pacroon.dk/projects/createthumb/createthumb.phps
Avatar billede googolplex Novice
10. september 2004 - 00:26 #2
Brug evt. dette script:

<?php
$pic = "evt/sti/billede.jpg";                // Originalt billede
$thumb = "evt/sti/billede_thumb.jpg";            // Ønsket miniature billede
Thumb($pic, $thumb);                    // Kald funktion

function Thumb($sourcefile, $targetfile) {
    $size = 80;                            // Max størrelse (pixler)
    $source_id = imageCreateFromJPEG($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $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);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg($target_id,$targetfile,100);
}
?>
Avatar billede martin1000ben Nybegynder
10. september 2004 - 00:27 #3
En hurtig kommentar.

Jeg vil ANBEFALE dig at ligge billedet som en fil på serveren, istedet for at ligge det ind i databasen - mysql og filer er ikke en særlig god sammenblanding. :)
Så i databasen bare skriv filnavnet.

Prøv at kigge på php scriptet gallery http://sourceforge.net/projects/gallery/ nok det bedste galleri script jeg har arbejdet med :)
Avatar billede Slettet bruger
10. september 2004 - 00:28 #4
.. forresten har jeg udkommenteret imagecreatetruecolor, da min daværende host ikke understøttede det. Siden fik jeg min egen server - så måske kan du også bruge den, den gør billederne lidt pænere når de er resized.

--
pacroon
Avatar billede mickiii Nybegynder
10. september 2004 - 12:20 #5
Martin1000ben - Jeg har ladet mig høre at det er smartest at komme dem i database, hvis man f.eks. ønsker at arbejde med mange billeder. Ved dog ikke om det er helt sandt?
Avatar billede googolplex Novice
10. september 2004 - 13:38 #6
Det er lige omvendt, ved mange billeder bør du IKKE ligge dem i databasen, men kun stien til billedet som du ligger på serveren.
Avatar billede martin1000ben Nybegynder
11. september 2004 - 13:40 #7
jeg holder med googolplex

Jeg kan ikke lige fortælle grunden, men jeg ved at det er noget med at en database ikke er "bygget" til at indeholde binary - altså filer.

Og hvis din database bliver fyldt for meget så kan det tage en *bande ord* at finde data fra databasen.

Og desuden er det også meget nemmere at holde styr på billeder når de ligger i et bibliotek ikke :)
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