קבלת גודל של תמונה ממערך של בתים בצד השרת

24 בספטמבר 2009

אין תגובות

 


בתפוז עלתה שאלה, כיצד לקבל מימדים של תמונה שהמקור שלה הוא handler ממערך של בתים.

 

לדוגמא, נניח שזה קוד ה – html



<asp:Image ImageUrl="~/Handler1.ashx" ID="myImg" runat="server" />


 

הנה קוד ה – handler

 



public void ProcessRequest(HttpContext context)


{


    context.Response.ContentType = "image/bmp";


 


    byte[] array = File.ReadAllBytes(@"c:\IMG_1181.jpg");


 


    context.Response.OutputStream.Write(array, 0, array.Length);


}


 

כעת אנחנו רוצים לדעת מה המימדים של התמונה.

 

הבעייה טמונה בהתנהגות של בקשות לשרת – למעשה התמונה myImg לא תקבל את התמונה במחזור החיים של הדף, כלומר לא הדף אחראי לתת לאובייקט התמונה את התמונה, אלא אחרי שהדף ירד ללקוח תתבצע עוד Request אל השרת כדי לקבל את התמונה מה – handler, ולכן אנחנו לא יכולים לדעת את מימדי התמונה בזמן מחזור החיים של הדף.

 

כדי לקבל בכל זאת את המימדים, נועל לעשות את זה או בצד הלקוח – או בצד השרת אבל רק ב- handler.

 

בצד הלקוח זה מאוד פשוט, לדוגמא:



<input type="button" value="ShowHeight" onclick="alert(myImg.height)" />


 

כמובן שאפשר לשלוח את הנתון ב – ajax לשרת.

 

בצד השרת (ב – handler) אפשר לכתוב את הקוד הבא:

 



public void ProcessRequest(HttpContext context)


{


    context.Response.ContentType = "image/bmp";


 


    byte[] array = File.ReadAllBytes(@"c:\IMG_1181.jpg");


 


 


    MemoryStream ms = new MemoryStream(array);


    System.Drawing.Image img = Image.FromStream(ms);


 


    int height = img.Height;


 


    context.Response.OutputStream.Write(array, 0, array.Length);


}

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *