$hent = mysql_query("SELECT billede FROM tblbilleder WHERE id = '1' ") or die(mysql_error()); $billede2 = mysql_fetch_array($hent); header("Content-type: image/jpeg");
Hvis jeg echoer $billede2['billede'] så viser den det kilde-billedet. Så den henter fint billede fra databasen.
Men hvis jeg kører funktionen (og echoer $file2) så kommer følgende fejl: imagecreatefromjpeg(ÿØÿà): failed to open stream: No such file or directory in <b>/upload.php</b> on line <b>15
Hvorfor vil funktionen ikke bruge billedet hentet fra databasen?
imagecreatefromjpeg skal bruge et filnavn. Fejlen imagecreatefromjpeg(ÿØÿà) - her burde stå et filnavn. I stedet står der ÿØÿà - jpegfiler starter netop med disse 4 tegn så jeg tror du gemmer selve billedet i din mysql-tabel (i feltet billede i tabellen tblbilleder) i stedet for filnavnet.
Du bruger Internet Explorer gætter jeg på .... den viser nemlig et billede selv om der ikke er sendt de rigtige headers. Derfor for du vist et billede når du echo'er billedet som er gemt i mysql.
Det er fint nok at gemme billeddata direkte. Problemet er bare at imagecreatefromjpeg() som din imageresizejpeg()-funktion bruger til at åbne billedet med, kun kan åbne en fil fra filsystemet. Den kan ikke bruge de rå billeddata.
Men hvis du i skifter imagecreatefromjpeg($sourcefile)
ud med imagecreatefromstring($sourcefile) så virker det.
Eller ... der kommer så fejl i linien nedenunder, igen fordi $sourcefile ikke er en fil i filsystemet. copy($sourcefile, $destfile) forsøger jo at oprette en kopi af filen. Men $sourcefile er stadig ikke en fil men billeddata.
Og så kan man selvfølgelig kode sig uden om det også. Men selv om man gør det, så vil den resize-de fil blive gemt som en fil - og så vidt jeg kan forstå er det det du helst vil undgå?
Jeg har dog ikke testet den. Den originale version skulle også bruge en fil for at finde bredde/højde på billedet. Den modificerede version her henter disse ud fra gd-billedet som bliver lavet af imagecreatefromstring(),
Og så bliver billedet ikke gemt mere og derfor er $destionationfile også fjernet fra funktionens parameterliste.
takker det fungerede fint med ét af mine jpeg billeder, men ikke med et alm digital foto, den meldte følgende fejl: Passed data is not in 'JPEG' format in
men jeg vil lige kigge videre på det imorgen. mange tak for hjælpen indtil videre.
og nu fandt jeg lige ud af hvorfor :) mit felt skulle være longblob i stedet for blob, for ellers var der ikke plads nok til at have hele jpeg billedet 'billede'
tak for hjælpen, du skal have point...
Synes godt om
Ny brugerNybegynder
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.