Gå til innhold

Anbefalte innlegg

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 av :Francis:
Lenke til kommentar
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...