Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Prism Ein dynamisches Image generieren? ASP.NET (https://www.delphipraxis.net/118677-ein-dynamisches-image-generieren-asp-net.html)

Mavarik 12. Aug 2008 21:08


Ein dynamisches Image generieren? ASP.NET
 
Hallo Zusammen!

Irgendwie habe ich gerade mal wieder eine Loch im Hirn... :wall: <- Vielleicht davon...

Ich möchte ein Image

<asp:Image id="Image1" runat="server"></asp:Image>

Dynimisch mit eine Grafik belegen... (Also nicht mit einer statischen URL eines vordefinierten Bildes) sondern...

BMP.LoadFromFile(Image1.Page.MapPath('~')+'\Meinbi ld.bmp');

// Mach was mit dem Bild und dann dem Image1 "zuweisen"

Aber Wie?

Grüsse Frank :coder:

Dax 12. Aug 2008 21:31

Re: Ein dynamisches Image generieren? ASP.NET
 
Bitte?

Wenn es dir darum geht, ein Image dynamisch zu erzeugen und damit "wie statisch" anzeigen zu können, hier ein Schnipsel aus einem aktuellen Projekt:
Code:
int color;
        if (int.TryParse(Request["c"], System.Globalization.NumberStyles.HexNumber, null, out color)) {
            Color fill = Color.FromArgb(color);
            Response.Clear();
            Response.AppendHeader("content-type", "image/png");
            MemoryStream ms = new MemoryStream();
            using (Bitmap result = new Bitmap(1, 1)) {
                using (Graphics g = Graphics.FromImage(result)) {
                    g.Clear(fill);
                }
                result.Save(ms, ImageFormat.Png);
            }
            byte[] b = ms.ToArray();
            Response.OutputStream.Write(b, 0, b.Length);
            ms.Dispose();
            Response.End();
        }
Das musst du nur in eine eigene Seite packen und diese Seite (mit entsprechenden Parametern) als Image-URL benutzen...

Mavarik 13. Aug 2008 07:29

Re: Ein dynamisches Image generieren? ASP.NET
 
Hi!

ne das meine ich nicht, sondern.
Delphi-Quellcode:

Procedure T...Page_Load ...;
begin
  if IsPostback
    then begin
           // Was auch immer
         end
    else begin
           Label1.Visible := false;
           Image1.Wasauchimmer := Func_IchBinneBitmap; //<-  Sowas
         end;
end;
Grüsse Frank :coder:

Phoenix 13. Aug 2008 07:36

Re: Ein dynamisches Image generieren? ASP.NET
 
Du musst dem Image zwangsläufig eine URL zu einem Bild mitgeben:
Code:
Image1.ImageUrl = "Pfad zu Deinem dynamisch generierten / dynamisch zu generierendem Bild";

Mavarik 13. Aug 2008 08:19

Re: Ein dynamisches Image generieren? ASP.NET
 
Zitat:

Zitat von Phoenix
Du musst dem Image zwangsläufig eine URL zu einem Bild mitgeben:
Code:
Image1.ImageUrl = "Pfad zu Deinem dynamisch generierten / dynamisch zu generierendem Bild";

Ich hatte gehofft, dass ich mir eine Http handler dafür sparen kann und es einen einfacheren weg gibt...

Vielleicht mit RenderBeginTag usw.?

Frank

Phoenix 13. Aug 2008 08:27

Re: Ein dynamisches Image generieren? ASP.NET
 
Ich glaube, wir reden gerade furchtbar aneinender vorbei.

Erstml kurz den Ablauf angucken, wie ein Browser an das Bild kommt:
Er bekommt eine html-Seite. Irgendwo da drin steht eine URL zu einem Bild.
Der Browser ruft das Bild von eben dieser URL mit einem neuen Request ab (sofern diese URL nicht schonmal abgerufen wurde und somit gecached ist).
Der Browser zeigt die Seite mit Bild an.

Wenn Du nun dynamisch Bilder generieren / austauschen willst, dann bleibt Dir nichts anderes übrig als eine Url (also z.B. via System.Web.UI.WebControls.Image.ImageUrl) in die Seite zu schreiben. Du kannst das daraus resultierende HTML <image url="xyz.gif" alt="Alternativtext" /> aber natürlich auch gerne ohne das Image-Control sondern von Hand erzeugen, wenn Du spass daran hast extra Code zu schreiben.

Die Frage ist doch eher: Welches Bild musst Du anzeigen? Also welche URL schreibst Du da rein?
Du hast da zwei Möglichkeiten:
1.) Du generierst das Bild zur Laufzeit der ASP.NET-Seite und legst es in ein Verzeichnis ab. Den Dateinamen gibst Du zurück und schreibst ihn als Ziel-Url ins html.

2.) Du schreibst tatsächlich einen http-Handler, der das Bild generiert. Du gibst also eine URL auf diese Handlerdatei in die Seite, die z.B. via Parameter in der Adresse dem Handler sagt, was für ein Bild dieser generieren und zurückliefern soll.

Also wo klemmt es bei Dir nun eigentlich?

Mavarik 13. Aug 2008 09:00

Re: Ein dynamisches Image generieren? ASP.NET
 
Zitat:

Zitat von Phoenix
Ich glaube, wir reden gerade furchtbar aneinender vorbei.

Also wo klemmt es bei Dir nun eigentlich?

Also das war ja nicht die Frage... Die zwei Wege Du Du beschreibst sind ja trivial...
(Bin nicht zu blöd nur URL anzugeben.)

Es ging mir darum ein - wie auch immer positioniertes ASP Image runat="server" an der entsprechenden Stelle zu rendern.
also dem Responsestream (und zwar ohne clrear) im "richtigen Moment" den JPG Stream zu übergeben...

Grüsse Frank

Phoenix 13. Aug 2008 09:05

Re: Ein dynamisches Image generieren? ASP.NET
 
Äh...

Deswegen hab ich das ja oben erklärt: Das was Du willst kann gar nicht gehen.

Du kannst das JPG nicht in den Response-Stream der Seite (also da, wo das Image-Control sitzt), einfügen. Damit kommt der Browser zwangsläufig nicht klar, weil er nur HTML erwartet. Du kannst keine Binärdaten in eine Webseite 'einbetten'. Du kannst nur eine URL in die Seite schreiben und der Browser wird dann einen neuen Request für das Bild starten.

Mavarik 13. Aug 2008 11:47

Re: Ein dynamisches Image generieren? ASP.NET
 
Zitat:

Zitat von Phoenix
Äh...

Du kannst nur eine URL in die Seite schreiben und der Browser wird dann einen neuen Request für das Bild starten.

mal wieder eine Loch im Hirn... sag ich doch... gestern war es zu spät und heute hatte ich noch keinen Kaffee...

Danke jetzt bin ich wieder "eingenordet"

Grüsse Frank :mrgreen:

jfheins 13. Aug 2008 11:59

Re: Ein dynamisches Image generieren? ASP.NET
 
Zitat:

Zitat von Phoenix
Du kannst das JPG nicht in den Response-Stream der Seite (also da, wo das Image-Control sitzt), einfügen. Damit kommt der Browser zwangsläufig nicht klar, weil er nur HTML erwartet. Du kannst keine Binärdaten in eine Webseite 'einbetten'. Du kannst nur eine URL in die Seite schreiben und der Browser wird dann einen neuen Request für das Bild starten.

Es geht schon - wenn man nicht gerade IE 6 (glaube ich, vll. auch 5) benutzt :mrgreen:

Siehe hier: http://aktuell.de.selfhtml.org/artik...ages/index.htm

Sieht dann so aus:
Code:
[img]data:image/gif;base64,R0lGODlhmwDFAPcAAAAAAAE---eine Menge base64encodedes Zeug---wcHBh8f[/img]
Damit sollte der Browser keinen zusätzlichen Request schicken :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz