DCSIMG
קבלת גודל של תמונה ממערך של בתים בצד השרת - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

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

 

בתפוז עלתה שאלה, כיצד לקבל מימדים של תמונה שהמקור שלה הוא 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);

}

שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 2 and 3 and type the answer here:


Enter the numbers above: