[PHP] Image uit db tonen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Ik werk momenteel aan een Joomla component die op de enduser frontpage een aantal images zal moeten tonen. Deze worden door een batch script in de database gestopt.

Als ik gewoon het veld output, worden de bytes in de pagina weggeschreven:
PHP:
1
2
3
<?php
    print $row->image;
?>


Ik heb al geprobeerd om dit via een aantal php functies te converteren (imagejpeg, imagecreatefromstring, ...), maar deze brachten geen oplossing.

Nu lees ik dat het mogelijk is door een externe php file te linken, en een ID mee te geven, in een <img /> tag, maar dan zal ik de image nog eens extra moeten query'en alvorens te kunnen tonen, of kan ik de variabele ook rechtstreeks doorgeven?
Dan blijft er nog een probleem dat ik deze php file niet rechtstreeks kan linken, omdat deze niet via Joomla ingeladen wordt. Het path dat gegenereerd wordt, blijkt dat niet te kloppen.

Heeft iemand nuttige tips om dit probleempje te kunnen oplossen?

Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 22-09 15:41

voodooless

Sound is no voodoo!

(Juiste) content type vergeten meet te geven?

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Nee, ik heb het content type wel gezet, maar dan wordt nog gewoon de binaire data over de pagina geworpen

PHP:
1
2
    header("Content-type: image/jpeg");
    print $row->image;

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Het plaatje weergeven zal sowieso via een appart request moeten gebeuren. Je kunt de data van je plaatje niet zomaar* 'inlinen' in je html code.


*Het kan eventueel wel met wat base64 encoding en nog wat geneuzel, maar dit worddt niet door alle browsers ondersteund en deze manier zou ik ook pas toe gaan passen wanneer er echt geen enkele andere mogelijkheid meer over is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
-FoX- schreef op zondag 15 juni 2008 @ 14:14:
Nu lees ik dat het mogelijk is door een externe php file te linken, en een ID mee te geven, in een <img /> tag, maar dan zal ik de image nog eens extra moeten query'en alvorens te kunnen tonen, of kan ik de variabele ook rechtstreeks doorgeven?
Dan blijft er nog een probleem dat ik deze php file niet rechtstreeks kan linken, omdat deze niet via Joomla ingeladen wordt. Het path dat gegenereerd wordt, blijkt dat niet te kloppen.
Hoe doe je het nu dan? include() je de php file? Dat kán wel, maar of het handig is... maargoed, je slaat je plaatjes toch al op in je db, wat vrij zinloos is. je zult dan een inline image moeten gebruiken.

Acties:
  • 0 Henk 'm!

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Dat was ik aan het proberen, maar ik vind niet direct een manier om die loadimage.php file aan te spreken. Betekent dit dan ook dat ik de image vanuit het loadimage script opnieuw moet gaan query'en uit de DB of kan ik op een of andere manier een variabele doorgeven?

Acties:
  • 0 Henk 'm!

  • TRON
  • Registratie: September 2001
  • Laatst online: 16-09 13:13
@-FoX-: waarom is het een probleem om opnieuw een query te draaien?

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Acties:
  • 0 Henk 'm!

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Op zich niet echt een probleem vermoed ik, dan laat ik gewoon de image uit de mapping weg en haal ik ze zelf even op... dan blijft er nog altijd het probleem dat ik niet goed weet hoe ik deze externe php file kan aanspreken vanuit joomla.

Acties:
  • 0 Henk 'm!

  • Muthas
  • Registratie: December 2005
  • Niet online

Muthas

O+

Ehm, snap jij het of snap ik het niet? Inline images zijn een no-go, je zal altijd met een <img> tag willen werken. Dat betekend dus dat je een ander php script zal moeten aanroepen, waar al die variabelen uit joomla niet beschikbaar zijn. Via je url (domain.tld/images/dynamic/id) geef je dus door welk plaatje uit de database moet worden opgehaald, je doet die query, je set de header, en output het plaatje.

Acties:
  • 0 Henk 'm!

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Muthas schreef op zondag 15 juni 2008 @ 15:05:
Ehm, snap jij het of snap ik het niet? Inline images zijn een no-go, je zal altijd met een <img> tag willen werken. Dat betekend dus dat je een ander php script zal moeten aanroepen, waar al die variabelen uit joomla niet beschikbaar zijn. Via je url (domain.tld/images/dynamic/id) geef je dus door welk plaatje uit de database moet worden opgehaald, je doet die query, je set de header, en output het plaatje.
Ik begrijp het no-go van een inline image wel hoor, maar daar joomla zijn eigen systeem heeft voor het dynamisch beschikbaar maken van pagina's, weet ik niet precies welke url ik hiervoor moet opgeven. Joomla zal vast wel een of andere variabele hebben om dit snel te kunnen doen, alleen kan ik deze niet vinden...

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Waarom wil je die images perse in een database zetten? Zet je het lekker in je filesystem neer en sla in de db alleen de filenames op. Bespaart je een hoop gedoe.

Acties:
  • 0 Henk 'm!

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Topicstarter
Ik ben er ondertussen uit geraakt.. ik kon de php file gewoon aanroepen door een absolute url te gebruiken te starten vanuit de components dir. Dus iets in de aard als "components/com_test/img.php".

Filesystem is geen optie, hier ben ik verplicht om te werken met de DB.
Pagina: 1