HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Kép küldése Web Service-en keresztül


Példaprogram letöltése

16612 bájt

Ebben a példában egy olyan Web Service-t készítünk, mely képes arra, hogy tetszőleges méretű és tartalmú képeket szolgáltasson egy web method-on keresztül. Készítünk a példához egy Windows-os kliens alkalmazást is, melyben meghívjuk a Web Service-t és az általa visszaadott képet meg is jelenítjük a Form-on.

A feladat viszonylag egyszerű: szükségünk lesz egy Bitmap-re, melyet betölthetünk akár állományból, de generáltathatunk a programmal is. Ezt a Bitmap-et lementjük egy memória stream-re, majd ezt a memória területet egyszerűen visszatérési értékként adjuk a web method-nak, mely bájtokat tartalmazó tömböt ad vissza.
A kliens oldalon ezt a tömböt szintén egy memória stream segítségével visszaalakítjuk Bitmap-é és megjelenítjük.
A Web Service létrehozása után készítsünk egy GetPicture nevű függvényt, mely bájtokat tartalmazó tömböt ad vissza.
    [WebMethod]
    public byte[] GetPicture()
    {
A Bitmap-et most programból generáltatjuk, de állományból is betölthetnék.
      Bitmap bmp = new Bitmap(101, 101);
      ...
A létrejött képet mentjük egy MemoryStream objektumba.
      MemoryStream ms = new MemoryStream();
      bmp.Save(ms, ImageFormat.Bmp); 
A függvény visszatérési értékeként pedig a memória stream GetBuffer függvénye által adott területet adjuk, mely tartalmazza a képet. Ez a memória tartalom base64binary kódolással kerül átadásra a hívó félnek.
      return ms.GetBuffer();
    }
A Web Service elkészülte után fordítsuk le azt, majd hozzunk létre egy Windows-os alkalmazást. Szükségünk lesz egy proxy osztályra, melyen keresztül a Web Service-t könnyedén elérhetjük. Ehhez a WSDL.EXE parancssori alkalmazás segít bennünket. Ha kiadjuk az alábbi utasítást, akkor létrejön egy Service1.cs forráskód, melyben adott lesz a Web Service eléréséhez szükséges objektum.
wsdl http://localhost/PictureService/Service1.asmx?wsdl
A localhost helyett természetesen más is állhat attól függően, hogy a Web Service hol lett publikálva. A WSDL könnyebb eléréséhez használjuk a Visual Studio.NET Command Propmt-ot.
A létrejövő Service1.cs-t vegyük fel az új Windows-os projekthez.
A GetPicture függvény eléréshez hozzunk létre egy új objektumot a Service1 osztályból.
    private void button1_Click(object sender, System.EventArgs e)
    {       
      Service1 s = new Service1();
      byte[] buffer = s.GetPicture();
A GetPicture által adott bájtokat tartalmazó tömböt tároljuk egy memória stream-en.
      MemoryStream ms = new MemoryStream();
      ms.Write(buffer, 0, buffer.Length);
Ezt követően létrehozunk egy Bitmap osztályt, melyhez a memória stream-en lévő adatokat használjuk fel.
      Bitmap bmp = new Bitmap(ms);
Miután a Bitmap osztály létrejött már szabadon felhasználhatjuk a kapott képet.
      Graphics g = Graphics.FromHwnd(Handle);
      g.DrawImage(bmp, 30, 50);      
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 329. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |