Let’s go thru the code:

WCF Service:

Service1.svc.cs

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.Serialization;
  5. using System.ServiceModel;
  6. using System.ServiceModel.Web;
  7. using System.Text;
  8. using System.IO;
  9. using System.Drawing;
  10. using System.Drawing.Imaging;
  11. namespace PhotoService {
  12. public class Service1: IService1 {
  13. //This method will be called by the application to get Thumbnail
  14. public Stream GetThumbnail(string path) {
  15. try {
  16. Image imgThumb = null;
  17. Image img = Image.FromFile("/\\" + path); //Path for Image Eg. http://localhost:35798/RestServiceImpl.svc/GetThumbnail///YourServer//Images//SampleImage.jpg
  18. imgThumb = CreateThumbnail(img, 100, 100);
  19. var stream = ToStream(imgThumb, ImageFormat.Jpeg);
  20. WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg";
  21. return stream;
  22. } catch (Exception ex) {
  23. throw ex;
  24. }
  25. }
  26. //This method will generate thumbanail of 100 x 100
  27. private Image CreateThumbnail(Image image, int thumbWidth, int thumbHeight) {
  28. try {
  29. return image.GetThumbnailImage(
  30. thumbWidth,
  31. thumbHeight,
  32. delegate() {
  33. return false;
  34. },
  35. IntPtr.Zero);
  36. } catch (Exception ex) {
  37. throw ex;
  38. }
  39. }
  40. //Method to convert image in stream
  41. public Stream ToStream(Image image, ImageFormat formaw) {
  42. try {
  43. var stream = new System.IO.MemoryStream();
  44. image.Save(stream, formaw);
  45. stream.Position = 0;
  46. return stream;
  47. } catch (Exception ex) {
  48. throw;
  49. }
  50. }
  51. }
  52. }
IService1.cs
  1. using System;
  2. using System.Runtime.Serialization;
  3. using System.ServiceModel;
  4. using System.ServiceModel.Web;
  5. using System.IO;
  6. using System.Drawing;
  7. using System.Drawing.Imaging;
  8. namespace PhotoService {
  9. [ServiceContract]
  10. public interface IService1 {
  11. [OperationContract]
  12. [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetThumbnail/{*path}")]
  13. Stream GetThumbnail(string path);
  14. }
  15. }
Run this service by this URL in browser

http://localhost:35798/RestServiceImpl.svc/GetThumbnail///YourServer//Images//SampleImage.jpg



Figure 1 Service has been created, now creating website to consume this service:

Website

Default.aspx
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Consume PhotoService.aspx.cs" Inherits="_Default" %>
  2. <!DOCTYPE html>
  3. <html
  4. xmlns="http://www.w3.org/1999/xhtml">
  5. <head runat="server">
  6. <title></title>
  7. </head>
  8. <body>
  9. <form id="form1" runat="server">
  10. <div>
  11. <asp:Image ID="Image1" runat="server" />
  12. <br />
  13. Enter Path of Image
  14. <asp:TextBox ID="ImagePath" runat="server"></asp:TextBox>
  15. <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="ImagePath" ErrorMessage="Enter Image Path Eg. //Server//Images//SampleImage.jpg "></asp:RequiredFieldValidator>
  16. <br />
  17. <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Get Image" />
  18. <br />
  19. </div>
  20. </form>
  21. </body>
  22. </html>
Default.aspx.cs
  1. using System;
  2. using System.Linq;
  3. using System.Web;
  4. using System.Web.UI;
  5. using System.Web.UI.WebControls;
  6. using System.Runtime.Serialization;
  7. using System.Net;
  8. using System.IO;
  9. public partial class _Default: System.Web.UI.Page {
  10. protected void Page_Load(object sender, EventArgs e) {
  11. Image1.Visible = false;
  12. }
  13. protected void Button1_Click(object sender, EventArgs e) {
  14. try {
  15. string path = ImagePath.Text;
  16. path.Trim();
  17. if (path != null) {
  18. WebClient proxy = new WebClient();
  19. byte[] responsedata = proxy.DownloadData(new Uri("http://localhost:21269/Service1.svc/GetThumbnail/" + path)); //Accept path like: //YourServer//Images//SampleImage.jpg
  20. Stream stream = new MemoryStream(responsedata);
  21. System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
  22. img.Save(Server.MapPath("~/Images/Test.jpg"));
  23. Image1.ImageUrl = "~/Images/Test.jpg";
  24. Image1.Visible = true;
  25. } else {
  26. Response.Write("Enter Image Path Eg.//Server//Images//SampleImage.jpg");
  27. }
  28. } catch (Exception ex) {
  29. Response.Write("Error : " + ex.Message.ToString());
  30. }
  31. }
  32. }


Thanks !!