[ASP] plaatje weergeven

Pagina: 1
Acties:

  • SavageNL
  • Registratie: November 2001
  • Laatst online: 20-05 17:43
Ik moet voor school een grafiek maken in een Delphi com object en deze laten zien in asp, maar ik kom bij een probleem...

Het delphi object geeft een string terug waar de jpg in staat, ik heb gecontroleerd of dit werkt op deze manier:
code:
1
2
3
4
5
6
7
8
9
10
<% 
  Set ProjectDOMObject= Server.CreateObject("Project_CMDB.COMHandler")
  dim plaatje
  plaatje = ProjectDOMObject.Graph
  
  set fs = CreateObject("Scripting.FileSystemObject")
  set file = fs.CreateTextFile("/Bestand.jpg", 2)
  file.Write(plaatje)
  file.Close()
%>

Ik krijg dan een jpg bestand dat gewoon werkt...


Maar als ik dit doe:
code:
1
2
3
4
5
6
7
8
<% Response.ContentType = "image/jpeg" %>
<% 
  Set ProjectDOMObject= Server.CreateObject("Project_CMDB.COMHandler")
  dim plaatje
  plaatje = ProjectDOMObject.Graph
  
  Response.BinaryWrite(plaatje)
%>


Dan krijg ik geen plaatje :(

Het plaatje is 30kb, als ik in Firefox naar de header kijk is het plaatje precies 2x zo groot

Het bestand tijdelijk ergens opslaan en dan gewoon een url neerzetten vind ik erg lelijk en vermijd ik het liefst.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Ik gok dat je eerst de juiste headers naar de client moet sturen :)

response.contenttype = "images/jpg"

[ Voor 24% gewijzigd door André op 04-10-2004 15:35 ]


  • SavageNL
  • Registratie: November 2001
  • Laatst online: 20-05 17:43
Ik heb nog een keer gekeken met firefox, en het blijkt dat de Response.BinaryWrite(...) iets niet helemaal goed doet...
Als ik iets met deze methode doe dan krijg ik na ieder teken een null teken terug (hexadecimaal 00) vandaar dat firefox zegt dat het plaatje 2x zo groot is...

Is dit een instelling in IIS of een parameter in asp ofzo?

  • SavageNL
  • Registratie: November 2001
  • Laatst online: 20-05 17:43
André schreef op 04 oktober 2004 @ 15:34:
Ik gok dat je eerst de juiste headers naar de client moet sturen :)

response.contenttype = "images/jpg"
Volgens mij is de contenttype wel image/jpeg, ik kan die van jou morgen ook nog ff proberen, maar ik verwacht dat het punt dat ik net gaf meer het probleem is

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
SavageNL schreef op 04 oktober 2004 @ 16:59:
[...]


Volgens mij is de contenttype wel image/jpeg, ik kan die van jou morgen ook nog ff proberen, maar ik verwacht dat het punt dat ik net gaf meer het probleem is
Waarschijnlijk poep je 't als unicode uit... Tenminste, dat denk ik omdat je na iedere byte een nul-byte terug krijgt.
Overigens zou ik die contenttype wel expliciet opgeven en dus niet uitgaan van "volgens mij..." ;)

[ Voor 13% gewijzigd door RobIII op 04-10-2004 17:08 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

En gebruik anders ipv binarywite gewoon write.

  • SavageNL
  • Registratie: November 2001
  • Laatst online: 20-05 17:43
RobIII schreef op 04 oktober 2004 @ 17:07:
[...]

Waarschijnlijk poep je 't als unicode uit... Tenminste, dat denk ik omdat je na iedere byte een nul-byte terug krijgt.
Overigens zou ik die contenttype wel expliciet opgeven en dus niet uitgaan van "volgens mij..." ;)
Regel 1 van de code staat dat ik het al doe met <% Response.ContentType = "image/jpeg" %>
Maar ik zal morgen "images/jpg" ook maar eens proberen. Dat het unicode wordt dat dacht ik ook al te begrijpen, maar dat zou een WriteBinary functie juist niet moeten doen volgens mij :?
André schreef op 04 oktober 2004 @ 17:09:
En gebruik anders ipv binarywite gewoon write.
Omdat het om de gegevens van een plaatje gaat kan Write er niet mee omgaan, na 4 bytes stopt ie er dan gewoon mee (waarschijnlijk komt dan een einde string teken of iets anders waar ie niet mee overweg kan...)

  • SavageNL
  • Registratie: November 2001
  • Laatst online: 20-05 17:43
Ik zie nu dingen over een Byte array... Is het mogelijk met een commando om een string om te zetten naar een Byte array en het zo te proberen?

Verwijderd

Ik had het toen zo opgelost. Geloof dat ik het ergens van Google Groups had gehaald.
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var
    S    : TMemoryStream;
    V    : OleVariant;
    nSize: integer;
    p    : pointer;

...

    S := TMemoryStream.Create;
    Jpg.SaveToStream(S);

    nSize := S.Size;

    V := VarArrayCreate([0, nSize-1], varByte);
    p := VarArrayLock(V);
    S.Position := 0;
    try
      S.ReadBuffer(p^, nSize);
    finally
      VarArrayUnlock(V);
    end;

    Response.ContentType := 'image/jpeg';
    Response.BinaryWrite(V);
    Response.Flush;

[ Voor 2% gewijzigd door Verwijderd op 04-10-2004 20:23 . Reden: oh laat maar, ik zie nu dat het moet in asp ]


  • SavageNL
  • Registratie: November 2001
  • Laatst online: 20-05 17:43
Verwijderd schreef op 04 oktober 2004 @ 20:21:
Ik had het toen zo opgelost. Geloof dat ik het ergens van Google Groups had gehaald.
Delphi:
1
...
Dit zou kunnen werken :) lijkt erop dat het OleVariant ding een binary is...
Ik zal morgen eens proberen om het OleVariant terug te sturen en die vanuit asp te printen, ze zijn er bij ons tegen om dingen vanuit delphi weg te schrijven (minder onderhoudbaar)

  • SavageNL
  • Registratie: November 2001
  • Laatst online: 20-05 17:43
Ok, dat was hem :)
Heel erg bedankt _/-\o_
Pagina: 1