11. november 2004 - 13:38
Der er
27 kommentarer og 1 løsning
billede med mere.
Jeg skal bruge et script der gør følgende: Den skal kunne modtage et billede ved filnavn. Der skal være 2 typer skalering. type 1 og type 2 Så skal der ske følgende: Type1: Hvis billedet er 480x640 Så skal retur billedet være 309x412 Hvis billedet er 640x480 Så skal retur billedet være 550x412 Type2: Hvis billedet er 480x640 Så skal retur billedet være 62x82 Hvis billedet er 640x480 Så skal retur billedet være 110x82 Der giver mange point for dette for det har drillet mig i meget lang tid nu...
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
11. november 2004 - 14:50
#2
Ja, har set den, men kan ikke rigtig lave det jeg vil have ud fra det, men måske du kan ?
11. november 2004 - 14:51
#3
Den ændrer så billedestørrelsen udfra nogle faste mål - men kvaliteten af billedet bliver ganske god.... Vil du have et eksempel på en modifikation der sikrer det med de forskellige størrelser ? mvh
11. november 2004 - 14:52
#4
hov... havde ikke lige opdateret. jeg skal nok lave et eksempel. mvh
11. november 2004 - 14:53
#5
Super... Men man skal kunne: <img src=filen.aspx?filnavn=ost.jpg&type=1> Og så er filen.aspx det du skal hjælpe med...
11. november 2004 - 15:21
#6
Hvis du har et fast forhold du skalerer efter kan du jo gøre det lidt smartere, men mon ikke noget i denne stil kan gøre det : Denne side hedder så foto, og den skulle så kunne kaldes med : foto.aspx?ImageFileName=somefilename.jpg&SizeConversionType=Type1 (Jeg har ikke selv prøvet det, så der kan godt være et par bøffer :o) Mvh using System; using System.Collections; using System.Drawing; using System.Drawing.Imaging; namespace EXP2.PeterLang { public enum SizeConversionType { Type1, Type2 } public class foto : System.Web.UI.Page { private const string IMAGE_FOLDER = "~/Images/"; protected SizeConversionType ConversionType { get { object o = Request.QueryString["SizeConversionType"]; try { return (SizeConversionType)Enum.Parse(typeof(SizeConversionType), o.ToString(), true); } catch { return SizeConversionType.Type1; } } } protected string ImageFileName { get { return (object)Request.QueryString["ImageFileName"] != null ? Request.QueryString["ImageFileName"] : null; } } private void Page_Load(object sender, System.EventArgs e) { string path = Server.MapPath(IMAGE_FOLDER + ImageFileName); Image orgImage = Image.FromFile(Server.MapPath(path)); int orgWidth = orgImage.Width; int orgHeight = orgImage.Height; orgImage.Dispose(); int newWidht = 0; int newHeigth = 0; switch(ConversionType) { case SizeConversionType.Type1 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 309; newHeigth = 412; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 550; newHeigth = 412; } break; case SizeConversionType.Type2 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 62; newHeigth = 82; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 110; newHeigth = 82; } break; } Image image = ImageResizer.RezizeImage(path, newWidht, newHeigth); Response.ContentType = "image/jpeg"; image.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); image.Dispose(); } override protected void OnInit(EventArgs e) { InitializeComponent(); base.OnInit(e); } private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } } public class ImageResizer { public static Bitmap RezizeImage(string filePath, int width, int height) { System.Drawing.Bitmap bmpOut = null; try { Bitmap bmp = new Bitmap(filePath); bmpOut = new Bitmap(width, height); Graphics g = Graphics.FromImage(bmpOut); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.FillRectangle(Brushes.White, 0, 0, width, height); g.DrawImage(bmp, 0, 0, width, height); bmp.Dispose(); } catch { return null; } return bmpOut; } } }
11. november 2004 - 15:22
#7
(det er måske heller ikke ligefrem den meste elegante løsning - men det kunne da være at det kunne bruges som en en starter)
11. november 2004 - 15:55
#8
Det der fungere max IKKE... Prøv at se start og stop på det jeg har, der ikke fungere max: <%@ Import Namespace=System.Drawing %> <%@ Import Namespace=System %> <%@ Import Namespace=System.Web %> <html> <script language="VB" runat="server"> Sub Page_Load(Sender As Object, E As EventArgs) using System; using System.Collections; using System.Drawing; using System.Drawing.Imaging; namespace EXP2.PeterLang { public enum SizeConversionType { Type1, Type2 } public class foto : System.Web.UI.Page { private const string IMAGE_FOLDER = "~/Images/"; protected SizeConversionType ConversionType { get { object o = Request.QueryString["SizeConversionType"]; try { return (SizeConversionType)Enum.Parse(typeof(SizeConversionType), o.ToString(), true); } catch { return SizeConversionType.Type1; } } } protected string ImageFileName { get { return (object)Request.QueryString["ImageFileName"] != null ? Request.QueryString["ImageFileName"] : null; } } private void Page_Load(object sender, System.EventArgs e) { string path = Server.MapPath(IMAGE_FOLDER + ImageFileName); Image orgImage = Image.FromFile(Server.MapPath(path)); int orgWidth = orgImage.Width; int orgHeight = orgImage.Height; orgImage.Dispose(); int newWidht = 0; int newHeigth = 0; switch(ConversionType) { case SizeConversionType.Type1 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 309; newHeigth = 412; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 550; newHeigth = 412; } break; case SizeConversionType.Type2 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 62; newHeigth = 82; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 110; newHeigth = 82; } break; } Image image = ImageResizer.RezizeImage(path, newWidht, newHeigth); Response.ContentType = "image/jpeg"; image.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); image.Dispose(); } override protected void OnInit(EventArgs e) { InitializeComponent(); base.OnInit(e); } private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } } public class ImageResizer { public static Bitmap RezizeImage(string filePath, int width, int height) { System.Drawing.Bitmap bmpOut = null; try { Bitmap bmp = new Bitmap(filePath); bmpOut = new Bitmap(width, height); Graphics g = Graphics.FromImage(bmpOut); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.FillRectangle(Brushes.White, 0, 0, width, height); g.DrawImage(bmp, 0, 0, width, height); bmp.Dispose(); } catch { return null; } return bmpOut; } } } End Sub </script> </html>
11. november 2004 - 16:00
#9
æh nej... sådan kan du heller ikke rigtig gøre det. det jeg sendte dig var en codebehind til den side du skulle linke til med <img src=filen.aspx?filnavn=ost.jpg&type=1> hvis du ikke bruger codebehind, og for øvrigt skriver i VB - kan du ikke tage det direkte. (det ser ud som om du bare har sat det hele ind i din page_load (på VB'sk). bruger du webmatrix - eller hvad skriver du koden i ? mvh
11. november 2004 - 16:08
#10
Hvad ved jeg. Det er noget jeg har fundet, og det virker på den måde... Kan du ikke smide dit kode ind i den ?
11. november 2004 - 16:16
#11
hvad skriver du din kode i .... bruger du visual studio, webmatrix eller noget helt tredje ? mvh
11. november 2004 - 16:22
#12
hvad mener du..? Det jeg har sendt i 3 indlæg oppe, er indholdet af en fil der hedder thump.aspx Til den sender jeg så filnavn,width,height sådan her fra min asp/html fil: <img src=thump.aspx?filnavn=ost.jpg&width=100&height=100> Og det virker... Den fucker bare billedet... Men funktionen virker...
11. november 2004 - 16:54
#13
Ok... jeg synes ikke det fremgik at du havde noget der virkede - og hvis jeg skal kigge på kan du poste det her, men eller virker det her fint nok : hvis du gemmer nedenstående i en fil - f.eks. thump2.aspx kan du vise et billede sådan her : <img src=thump2.aspx?ImageFileName=DSC00079.JPG&SizeConversionType=Type1> // det er så det her du skal gemme... husk at sætte denne her : // private const string IMAGE_FOLDER = ""; // hvis billederne ikke ligger i roden af webbet // og så filen... <%@ Page Language="C#" %> <%@ import Namespace="System" %> <%@ import Namespace="System.Collections" %> <%@ import Namespace="System.Drawing.Imaging" %> <script runat="server"> public enum SizeConversionType { Type1, Type2 } private const string IMAGE_FOLDER = ""; protected SizeConversionType ConversionType { get { object o = Request.QueryString["SizeConversionType"]; try { return (SizeConversionType)Enum.Parse(typeof(SizeConversionType), o.ToString(), true); } catch { return SizeConversionType.Type1; } } } protected string ImageFileName { get { return (object)Request.QueryString["ImageFileName"] != null ? Request.QueryString["ImageFileName"] : null; } } protected void Page_Load(object sender, System.EventArgs e) { string path = Server.MapPath(IMAGE_FOLDER + ImageFileName); System.Drawing.Image orgImage = System.Drawing.Image.FromFile(path); int orgWidth = orgImage.Width; int orgHeight = orgImage.Height; orgImage.Dispose(); int newWidht = 0; int newHeigth = 0; switch(ConversionType) { case SizeConversionType.Type1 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 309; newHeigth = 412; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 550; newHeigth = 412; } else { newWidht = orgWidth; newHeigth = orgHeight; } break; case SizeConversionType.Type2 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 62; newHeigth = 82; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 110; newHeigth = 82; } else { newWidht = orgWidth; newHeigth = orgHeight; } break; } System.Drawing.Image image = ImageResizer.RezizeImage(path, newWidht, newHeigth); Response.ContentType = "image/jpeg"; image.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); image.Dispose(); } public class ImageResizer { public static System.Drawing.Bitmap RezizeImage(string filePath, int width, int height) { System.Drawing.Bitmap bmpOut = null; try { System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(filePath); bmpOut = new System.Drawing.Bitmap(width, height); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmpOut); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.FillRectangle(System.Drawing.Brushes.White, 0, 0, width, height); g.DrawImage(bmp, 0, 0, width, height); bmp.Dispose(); } catch { return null; } return bmpOut; } } </script> <html> <head> </head> <body> <form runat="server"> <!-- Insert content here --> </form> </body> </html>
11. november 2004 - 16:55
#14
(hmmm.... tror jeg finder en staveplade frem til næste gang)
11. november 2004 - 17:01
#15
Ja, nu viser den billedet, men den ændre ikke på størrelsen
11. november 2004 - 17:04
#16
den ændrer kun størrelsen hvis det billede du sender har nogle af de må du har angivet (sådan helt præcist). mvh
11. november 2004 - 17:06
#17
nogle af de mål self...
11. november 2004 - 17:10
#18
Kan du så ikke lave at hvis det IKKE er en af de 2 skal skal den tage og lave det til type 1
11. november 2004 - 17:12
#19
hvilken en af de to størrelser under type1 ?
11. november 2004 - 17:15
#20
men bortset fra det så står det her : (jeg har lige sat nogle kommentarer så du kan se det... du kan bare skrive de størrelser der skal være default for hver type) mvh switch(ConversionType) { case SizeConversionType.Type1 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 309; newHeigth = 412; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 550; newHeigth = 412; } else { newWidht = orgWidth; // default bredde for type1 newHeigth = orgHeight; // default højde for type1 } break; case SizeConversionType.Type2 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 62; newHeigth = 82; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 110; newHeigth = 82; } else { newWidht = orgWidth; // default bredde for type2 newHeigth = orgHeight; // default bredde for type1 } break; }
11. november 2004 - 17:15
#21
sorry.. 550/412
11. november 2004 - 17:20
#22
Så bliver filen sådan her : <%@ Page Language="C#" %> <%@ import Namespace="System" %> <%@ import Namespace="System.Collections" %> <%@ import Namespace="System.Drawing.Imaging" %> <script runat="server"> public enum SizeConversionType { Type1, Type2 } private const string IMAGE_FOLDER = ""; protected SizeConversionType ConversionType { get { object o = Request.QueryString["SizeConversionType"]; try { return (SizeConversionType)Enum.Parse(typeof(SizeConversionType), o.ToString(), true); } catch { return SizeConversionType.Type1; } } } protected string ImageFileName { get { return (object)Request.QueryString["ImageFileName"] != null ? Request.QueryString["ImageFileName"] : null; } } protected void Page_Load(object sender, System.EventArgs e) { string path = Server.MapPath(IMAGE_FOLDER + ImageFileName); System.Drawing.Image orgImage = System.Drawing.Image.FromFile(path); int orgWidth = orgImage.Width; int orgHeight = orgImage.Height; orgImage.Dispose(); int newWidht = 0; int newHeigth = 0; switch(ConversionType) { case SizeConversionType.Type1 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 309; newHeigth = 412; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 550; newHeigth = 412; } else { newWidht = 550; newHeigth = 412; } break; case SizeConversionType.Type2 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 62; newHeigth = 82; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 110; newHeigth = 82; } else { newWidht = 550; newHeigth = 412; } break; } System.Drawing.Image image = ImageResizer.RezizeImage(path, newWidht, newHeigth); Response.ContentType = "image/jpeg"; image.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); image.Dispose(); } public class ImageResizer { public static System.Drawing.Bitmap RezizeImage(string filePath, int width, int height) { System.Drawing.Bitmap bmpOut = null; try { System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(filePath); bmpOut = new System.Drawing.Bitmap(width, height); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmpOut); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.FillRectangle(System.Drawing.Brushes.White, 0, 0, width, height); g.DrawImage(bmp, 0, 0, width, height); bmp.Dispose(); } catch { return null; } return bmpOut; } } </script> <html> <head> </head> <body> <form runat="server"> <!-- Insert content here --> </form> </body> </html>
11. november 2004 - 17:22
#23
Det virker... Jeg giver en luder i lufthavnen... Mange 10000 tak... Vil du have point ?
11. november 2004 - 17:24
#24
snup du bare luderen.... så snupper jeg pointene istedet ;o) mvh
11. november 2004 - 17:27
#25
Ok...
24. november 2004 - 22:32
#26
Håber du lige kan hjælpe mig... Nu ser scriptet sådan herud: Spørgsmålet er... Kan du lave sådan at hvis det hverken er det ene eller det andet, så skal den hvis højden er størrere end bredden, lave en type5 ??? <%@ Page Language="C#" %> <%@ import Namespace="System" %> <%@ import Namespace="System.Collections" %> <%@ import Namespace="System.Drawing.Imaging" %> <script runat="server"> public enum SizeConversionType { Type1, Type2, Type3, Type4 } private const string IMAGE_FOLDER = ""; protected SizeConversionType ConversionType { get { object o = Request.QueryString["SizeConversionType"]; try { return (SizeConversionType)Enum.Parse(typeof(SizeConversionType), o.ToString(), true); } catch { return SizeConversionType.Type1; } } } protected string ImageFileName { get { return (object)Request.QueryString["ImageFileName"] != null ? Request.QueryString["ImageFileName"] : null; } } protected void Page_Load(object sender, System.EventArgs e) { string path = Server.MapPath(IMAGE_FOLDER + ImageFileName); System.Drawing.Image orgImage = System.Drawing.Image.FromFile(path); int orgWidth = orgImage.Width; int orgHeight = orgImage.Height; orgImage.Dispose(); int newWidht = 0; int newHeigth = 0; switch(ConversionType) { case SizeConversionType.Type1 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 309; newHeigth = 412; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 550; newHeigth = 412; } else { newWidht = 550; newHeigth = 412; } break; case SizeConversionType.Type2 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 62; newHeigth = 82; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 80; newHeigth = 60; } else { newWidht = 80; newHeigth =60; } break; case SizeConversionType.Type3 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 48; newHeigth = 46; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 60; newHeigth = 46; } else { newWidht = 60; newHeigth =46; } break; case SizeConversionType.Type4 : if(orgWidth == 480 && orgHeight == 640) { newWidht = 88; newHeigth = 88; } else if(orgWidth == 640 && orgHeight == 480) { newWidht = 66; newHeigth = 88; } else { newWidht = 88; newHeigth =88; } break; } System.Drawing.Image image = ImageResizer.RezizeImage(path, newWidht, newHeigth); Response.ContentType = "image/jpeg"; image.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); image.Dispose(); } public class ImageResizer { public static System.Drawing.Bitmap RezizeImage(string filePath, int width, int height) { System.Drawing.Bitmap bmpOut = null; try { System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(filePath); bmpOut = new System.Drawing.Bitmap(width, height); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmpOut); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.FillRectangle(System.Drawing.Brushes.White, 0, 0, width, height); g.DrawImage(bmp, 0, 0, width, height); bmp.Dispose(); } catch { return null; } return bmpOut; } } </script> <html> <head> </head> <body> <form runat="server"> <!-- Insert content here --> </form> </body> </html>
24. november 2004 - 23:40
#27
Du kan bare i disse her : else { newWidht = 550; newHeigth = 412; } Gøre sådan her : // størrelserne på en type 5 må du så sætte ind istedet for X og Y. else if(newHeight > newWidht) { newWidht = X; newHeigth = Y; } else { newWidht = 550; newHeigth = 412; } Man kan så sige at en switch ikke længere synes som det fikseste :o) Mvh
25. november 2004 - 11:11
#28
Hvordan ville du så gøre det ? Kunne man ikke lave nogle if height > 40 the blabla
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.