:Francis: Skrevet 15. oktober 2009 Del Skrevet 15. oktober 2009 (endret) Jeg lager en ASP .NET applikasjon som skal kunne brukes for å resize, croppe og lagre bilder. Jeg har fått til å croppe, resize og lagre i dårligere kvalitet, men jeg ønsker å kunne se endringene jeg gjør i realtime. Utilities.cs: public static class Utilities { private static System.Drawing.Image tempImage; public static System.Drawing.Image staticTempImage { get { return tempImage; } set { tempImage = value; } } } Default.aspx.cs: protected void SelectButton_Click(object sender, EventArgs e) { string filename = FileUploadControl.FileName; Stream s = FileUploadControl.FileContent; tempImg = (Bitmap)System.Drawing.Image.FromStream(s); Utilities.staticTempImage = tempImg; //saveJpeg("D:\\Test\\" + filename, tempImg, qual); } Default.aspx: <body> <form id="form1" runat="server"> <div> <asp:FileUpload id="FileUploadControl" runat="server" /> <asp:Button runat="server" id="SelectButton" text="Select" onclick="SelectButton_Click" /> <br /> <br /> <div> <img src="ImageHandler.ashx" alt="picture not loaded" /> </div> <br /> <br /> <asp:Label ID="qualityLabel" runat="server" Text="Quality"></asp:Label> <asp:DropDownList ID="qualityDropDownList" runat="server" AutoPostBack="True" onselectedindexchanged="qualityDropDownList_SelectedIndexChanged"> </asp:DropDownList> </div> </form> </body> ImageHandler.ashx: <%@ WebHandler Language="C#" Class="ImageHandler" %> using System; using System.Web; public class ImageHandler : IHttpHandler { public void ProcessRequest (HttpContext context) { try { context.Response.ContentType = "image/bmp"; context.Response.Write(Utilities.staticTempImage); //context.Response.WriteFile("D:\\Test\\fishy_law.jpg"); } catch { } } public bool IsReusable { get { return false; } } } Bildet blir lagret i Utilities.cs, men blir ikke vist i siden. Bruker jeg linken direkte i ImageHandler.ashx slik; context.Response.WriteFile("D:\\Test\\fishy_law.jpg"); vises bildet, men jeg synes det virker som en svært dårlig løsning å lagre bildet på fil for hver endring. Jeg ønsker å foreta lagringen etter at alle edringene er gjort. Et annet irriterende problem er at ImageHandler.ashx aldri blir kjørt hvis jeg bruker Opera. Er det noen som har peiling på hvorfor? Setter stor pris på all hjelp! Mvh Francis Endret 15. oktober 2009 av :Francis: Lenke til kommentar
Wattengård Skrevet 19. oktober 2009 Del Skrevet 19. oktober 2009 Om du skriver bildet i en fil eller ikke tror jeg ikke vil ha så mye å si. Du må jo uansett gjøre en postback for å vise resultatet av forrige operasjon, og jeg tror nok den tar lengre tid enn mellomlagringen. De fleste løsningene (alle?) jeg har sett på dette området består av både en klientside og en tjenerside bit. Klientsidebiten er laget i javascript, og en postback skjer ikke før croppingen er utført. Deretter sendes koordinatene til server og server cropper bildet og poster det tilbake. All visning før den tid kontrolleres i JavaScript. Den siste Railscast-videoen viser dette med en Rails-backend. Men frontend biten er den samme, og er jQuery-basert... -C- Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå