Announcement

Collapse
No announcement yet.

dynamische Bilder erzeugen die zweite

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • dynamische Bilder erzeugen die zweite

    Hallo,

    da in meinem ersten Beitrag keine Antworten gekommen sind versuche ich es noch mal mit einem konkreten Beispiel, damit meine Frage hoffentlich besser verstanden wird.

    Als Beispiel möchte ich eine analog-Uhr in einem Image-Feld auf einer ASP.NET Seite darstellen. Die Uhr soll sich per klick auf einen Button aktualiseren und das Bild für die analoge Uhr wird dynamisch in der ASP.NET-Anwendung erzeugt.

    Hierfür habe ich 3 Klassen programmiert:

    -clsPicture erstellt per API ein Bitmap und stellt einige Zeichenfunktionen zur Verfügung. Wenn alles fertig gezeichnet ist kann mit der Eigenschaft Picture ein stdPicture erhalten werden.

    -clsGIFStream erstellt aus dem stdPicture einen Gif-Stream in ein Byte-Array. Dieses Array kann in eine Datei gespeichert werden und ist dann ein vollwertiges Gif-Bild.

    -clsanalogClockGifStream zeichnet eine analoge Uhr und übergibt den Gif-Stream im Byte-Array.

    Folgenden Code habe ich zum testen verwendet:

    Code:
      Const FileName = "c:\Clock.gif"
        
      Dim Clk As New clsanalogClockGifStream
      
      Dim GifStream() As Byte
      Dim Dat As Long
      Dim i1 As Long
      
      If Clk.analog_Clock_Gif_Stream(100, GifStream()) Then
        On Error Resume Next
        Kill FileName
        On Error GoTo 0
        
        Dat = FreeFile
        Open FileName For Binary As #Dat
          Put #Dat, , GifStream()
        Close #Dat
      End If
      
      Set Clk = Nothing
      Erase GifStream
    Jetzt ist die Frage: Wenn ich diesen Code in ASP.NET in das Ereignis für den Buttonclick schreibe: Wie kommt das Bild in das Image-Feld auf der HTML-Seite im User-Browser, anstatt auf die Festplatte des Servers?

    Viele Grüße
    Andreas
    Attached Files

  • #2
    Hallo,

    Wie kommt das Bild in das Image-Feld auf der HTML-Seite im User-Browser?
    das "Geheimnis" liegt in der Zeichenfolge "image/jpeg" für die ContentType-Eigenschaft des Response-Objekts. Das folgende Beispiel liest den Grafikinhalt aus der MS SQL Server-Datenbank aus, um die Grafik direkt an den Browsser zu schicken:

    Code:
    Imports System.Data.SqlClient
    Imports System.IO
    ...
    Private Const cCS As String = "data source=localhost;initial catalog=tempdb;uid=sa;pwd=xyz"
    Private Const cSQL As String = "SELECT JPG FROM OSPICTURES WHERE RecID=1"
    Private Sub Page_Load(ByVal sender As System.Object, _ 
         ByVal e As System.EventArgs) Handles MyBase.Load 
      'Put user code to initialize the page here
      Dim aMS As New MemoryStream()
      Dim aCon As New SqlConnection(cCS)
      aCon.Open()
      Try
        Dim aCmd As New SqlCommand(cSQL, aCon)
        Dim aData As Byte()
        aData = DirectCast(aCmd.ExecuteScalar, Byte())
        aMS.Write(aData, 0, aData.Length)
        Dim aBM As New Bitmap(aMS)
        Me.Response.ContentType = "image/jpeg"
        aBM.Save(Me.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg) 
      Finally
        aCon.Close()
        aMS.Close()
      End Try
    End Sub
    Die Webseite, in der die Grafik sichtbar sein soll, ruft dann entweder die Webseite oder einen HTTPHandler auf, der die Grafikdaten zurückliefert:

    <p>&lt;img src=&quot;MeineWebSeite.aspx&gt;<br>
    &lt;img src=&quot;MeinHTTPHandler.ashx&gt;</p>
    Zuletzt editiert von Andreas Kosch; 18.11.2007, 13:12.

    Comment

    Working...
    X