Avatar billede jgivoni Nybegynder
27. januar 2004 - 21:13 Der er 8 kommentarer og
1 løsning

Manipulering af billede i MySQL vha. PHP/GD

Den her er vist lidt svær:

Jeg har lavet et script, der efter upload af et billede til en fil, automatisk genererer en thumbnail og gemmer den med et nyt filnavn med forstavelsen thumb_:

$im = imageCreateFromJPEG("$img_file");
$width=imageSX($im);
$height=imageSY($im);
$thumb = @imageCreate(100,100);
imageCopyResized ($thumb, $im, 0, 0, 0, 0, 100, 100, imagesx($im), imagesy($im));
imageJPEG($thumb,"thumb_$img_file");
imageDestroy($im);
imageDestroy($thumb);

Det virker.

Nu har jeg valgt i stedet at have billeder gemt i en tabel i MySQL, men jeg vil stadig gerne bruge image-funktionerne fra GD-biblioteket til at generere en thumbnail.

Billedet ligger i tabellen PICTURE i feltet DATA, som er longblob.

Og scriptet
show_picture.php?pictureid=2
viser f.eks. billede nr. 2

Men

$im = imageCreateFromJPEG("show_picture.php?pictureid=2");

giver fejlmeddelelsen

Warning: imagecreatefromjpeg: Unable to open 'show_picture.php?pictureid=2' for reading

Hvordan henter jeg billed-data ud fra databasen og ind i $im variablen?

Nogen med erfaringer eller vilde idéer derude? :-)
Avatar billede taskmgr Nybegynder
27. januar 2004 - 21:25 #1
Hvordan ser show_picture.php ud?

...og hvorfor have 2 filer til at lave det?
Avatar billede detox Nybegynder
27. januar 2004 - 21:29 #2
Avatar billede detox Nybegynder
27. januar 2004 - 21:30 #3
Se evt. kommentaren:  12-Apr-2003 03:44
Avatar billede jgivoni Nybegynder
27. januar 2004 - 23:09 #4
ImageCreateFromString - det lyder som om du er inde på noget rigtigt, men indtil videre giver den bare fejlen:
"Data is not in a recognized format."

Hvordan finder jeg den omtalte kommentar? (12-Apr-2003 03:44)
Avatar billede jgivoni Nybegynder
27. januar 2004 - 23:16 #5
Ved at trække billed-data ud og sende det direkte til
ImageCreateFromString($data)
får jeg istedet denne:
Warning: imagecreatefromstring: Passed data is not in 'WBMP' format
Det skal siges at billedet netop er i jpeg.
Avatar billede Slettet bruger
28. januar 2004 - 01:37 #6
Måske kan du bruge denne variant af din egen?

$im = imageCreateFromJPEG("http://servernavn/show_picture.php?pictureid=2");
Avatar billede Slettet bruger
28. januar 2004 - 01:38 #7
Den virker dog ikke, hvis serveren kører Windows.
Avatar billede jgivoni Nybegynder
28. januar 2004 - 17:39 #8
detox; imageCreateFromString virkede, da jeg fik kigget lidt nærmere på den linket og kommentaren, og iøvrigt fik henvist til de rigtige data i min tabel!
Så det må jo betyde points til dig, hvis du giver et svar.

Jeg gik videre og fik thumbnailen lagt ind i tabellen (feltet thumb_data).
Hele scriptet der nu sådan ud:

$q=mysql_query("SELECT * FROM picture WHERE pictureid=$pictureid");
$r = mysql_fetch_array($q);

$im =imageCreateFromString($r[data]);

$width=imagesx($im);
$height=imagesy($im);
$thumb = @imageCreate(100,100);
imageCopyResized ($thumb, $im, 0, 0, 0, 0, 100, 100, imagesx($im), imagesy($im));
ob_start(); // output to buffer
Imagejpeg($thumb); // write jpeg data as string (to buffer)
$th = mysql_escape_string(ob_get_contents()); // get buffer content
ob_end_clean(); // cleanup buffer
$q=mysql_query("UPDATE picture SET thumb_data='$th' WHERE pictureid=$pictureid");
imageDestroy($im);
imageDestroy($thumb);
Avatar billede detox Nybegynder
28. januar 2004 - 21:46 #9
Jamen så er her et svar ;o)
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