Results 1 to 11 of 11

Thread: Afbeelding in HTML invoegen

  1. #1

    Afbeelding in HTML invoegen

    Hallo, ik probeer een jpg ( uit een res bestand ) in een html pagina te plakken.
    Ik heb een variable html, waar ik alle html regels aan toevoeg.
    Dit is wat ik tot nu toe heb

    Code:
    var
        Corriente   : TResourceStream;
        Imagen      : TJPegImage;
    begin
       Imagen:=TJPegImage.Create;
       Corriente:=TResourceStream.Create( hInstance,
                                          '#1',
                                          RT_RCDATA );
       Corriente.Seek(0,soFromBeginning);
    
       Imagen.LoadFromStream(Corriente);
    //   Imagen.SaveToFile('C:\test.jpg');  deze regel werkt
       Imagen.Free;
       Corriente.Free;
    Maar op de SaveToFile regel moet dus eigenlijk iets komen van :

    Code:
    html.Add('<img src='+hetPlaatje+'/>');
    Hoe werkt dit precies ? moet ik het plaatje opslaan in een stream of ? heb geozcht op internet en dit forum, maar kom er niet uit. Alvast bedankt

  2. #2
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    Hoi,

    je maakt een grote fout door te denken dat je in html de image als bestand ertussen kan zetten.. Bij HTML moet je de bestandsnaam+locatie opgeven, je zou die html.add dus zo moeten maken:
    Code:
    html.Add('<img src="c:\test.jpg" />');
    !

  3. #3
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269
    • Titel aangepast, was "Vraagje over stream", zie 3 seconden


    Je wil het plaatje in de HTML zelf opslaan? Dat wordt dan vrij lastig, vanuit je <img src=""> verwijs je namelijk naar een extern bestand. Je zet de JPG dan in hetzelfde pad als je HTML...
    Qui custodiet ipsos custodes

  4. #4
    Dus het is niet zo dat er een "temporary" file aangemaakt word waar ik de img src naar kan laten verwijzen ?

    dus jullie zeggen, jpg opslaan, en na mijn http sessie maar verwijderen ?

  5. #5
    Je moet gewoon zorgen dat zolang je de html-pagina wilt bekijken de jpg extern aanwezig moet blijven.

  6. #6
    ik ben er uit nu dit is um ( niet dat je er iets aan hebt ) :

    Code:
        filename := extractFileName(filename);
        for tel := length(filename) downto 1 do begin
          if filename[tel] = '.' then begin
            filename := copy(filename, 2, tel-2);
            break;
          end;
        end;
        rStream:=TResourceStream.Create(hInstance, filename, RT_RCDATA);
        AResponseInfo.ContentType := 'text/image';
        AResponseInfo.ContentStream := rStream;
    waar filename een naam van een van mijn resource bestanden is,
    deze kan ik nu gewoon oproepen met img src=filename, dan komt dit bestand bij mijn onGet van mijn http server, en daar staat de bovenstaande code die het mooi voor mij neerplant, ik weet alleen niet of text/image bij swf's ( want jah die heb ik ook ) wel van toepassing is op alle browsers, maar daar kom ik vanzelf achter, iig bedankt degene die geprobeerd hebben te helpen

  7. #7
    Ooit al gehoord van de functie ExtractFilename ?
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  8. #8
    Quote Originally Posted by Henkie
    Ooit al gehoord van de functie ExtractFilename ?
    die gebruik ik toch ook ? sorry wat bedoel je precies ?
    mijn extensie kan 3 en 4 chars lang zijn ( jpg en jpeg )

  9. #9
    Hmm, 5 uur. Denk dat het tijd is om wakker te worden Mijn excuses, had het niet goed gelezen
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  10. #10
    Het is mogelijk om een afbeelding in een HTML bestand te steken met base64 encoding. Maar als ik mij niet vergis werkt deze methode enkel met Mozilla en Konqueror (niet met Internet Explorer).

    Code:
    <img src="data:image/jpg;base64,<base64 data>" />

  11. #11
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,248
    Zelf heb ik dit probleem ook gehad, en heb ik een in memory filesysteempje (tstringlist achtig) gemaakt waar ik plaatjes max 10 minuten, en minimaal 5 bewaar.

    Ruwweg ziet het er zo uit: (die van mij is iets complexer, maar dat is alleen dat het beter schaalt)

    Stop het plaatje in een memstream. en die memstream in een object (plaatje object) met een datetime erbij. (tijd van creatie)

    Stop dan de filenaam die je in de IMG SRC tag zet in een stringlist met het plaatje object als object (tstringlist.additem('plaatjes/00001.jpg',pltobject);

    In de indy handler kijk je dan of de gevraagde filenaam voorkomt in de stringlist, en dan kan je de memstream teruggeven als resultaat.

    Om niet dicht te groeien met tijdelijke memstreams heb ik een timer lopen om de 5 minuten objecten ouder dan 5 minuten weggooid.

    (let wel, operaties op de tstringlists moeten door een critical section beschermd worden)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 14
    Last Post: 01-Jul-05, 23:37
  2. inline Text en HTML in 1 e-mail bericht
    By MWK Mark in forum Algemeen
    Replies: 7
    Last Post: 16-Dec-04, 10:18
  3. Afbeelding uit FTP dir in TImage laten zien.
    By Mentallunatic in forum WebDelphi
    Replies: 2
    Last Post: 15-Dec-04, 23:41
  4. kun je html documenten opslaan in een database
    By swissis in forum Databases
    Replies: 11
    Last Post: 25-Jan-04, 17:38
  5. CF_HTML / HTML Format
    By GolezTrol in forum Algemeen
    Replies: 5
    Last Post: 13-Nov-02, 07:43

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •