Ciao a tutti,
ho un problema sul resize di alcune immagini: usando getThumbnailImage infatti, a seconda della foto JPG questa viene sgranata dopo il resize(nota: lo fa solo con alcune foto, penso sia un problema di codifica interna delle immagini jpg) Ho dunque letto che è meglio usare un altro metodo per il resize di immagini di una certa dimensione...mi sapete dunque indicare dove posso trovare uno script sostitutivo a quello che uso attualmente, cioè:
(N.b: lo script permette di definire subito, richiamando l'immagine, il tipo di resize)
graziecodice:<%@ Page Language="C#" %> <%@ import Namespace="System.Drawing" %> <%@ import Namespace="System.Drawing.Imaging" %> <script runat="server"> void Page_Load(Object sender, System.EventArgs e) { if (Request.QueryString["img"] == null) return; string imgName = Convert.ToString(Request.QueryString["img"]); if (imgName == "") return; string func = ""; if (Request.QueryString["fn"] != null) func = Convert.ToString(Request.QueryString["fn"]); if (func != "g" && func != "z" && func != "a") func = "l"; // ZoomX di default = 100%, oppure larghezza massima/larghezza assoluta di default = 150 pixel float resize_w = (func == "z") ? 100 : 150; if (Request.QueryString["w"] != null) resize_w = Convert.ToSingle(Request.QueryString["w"]); // ZoomY di default = ZoomX, oppure altezza massima/altezza assoluta di default = 100 pixel float resize_h = (func == "z") ? resize_w : 100; if (Request.QueryString["h"] != null) resize_h = Convert.ToSingle(Request.QueryString["h"]); try { // Carica l'immagine originale e ottieni le sue dimensioni System.Drawing.Image origImage = System.Drawing.Image.FromFile(Server.MapPath(imgName)); int w = origImage.Width; int h = origImage.Height; if (func == "z") { // La funzione è uno zoom // Se lo zoom corrisponde al 100% per tutti e due gli assi, imposta 'no function' if (resize_w == 100 && resize_h == 100) func = ""; else { // Massimo 1000% per ambedue gli assi if (resize_w > 1000) resize_w = 1000; if (resize_h > 1000) resize_h = 1000; w = Convert.ToInt32((w * resize_w) / 100); h = Convert.ToInt32((h * resize_h) / 100); } } else { int limit_w = Convert.ToInt32(resize_w); int limit_h = Convert.ToInt32(resize_h); if (func == "a") { // La funzione è un ridimensionamento assoluto (l'aspect ratio è ignorato) w = limit_w; h = limit_h; } else { // La funzione è una limitazione ad un massimo di dimensioni ('l' oppure 'g') if (w > limit_w || h > limit_h) { // L'immagine supera le dimensioni massime, in questo caso, 'l' e 'g' sono equivalenti, // ricalcola if (w > ((h * limit_w) / limit_h)) { h = Convert.ToInt32((h * limit_w) / w); w = limit_w; } else { w = Convert.ToInt32((w * limit_h) / h); h = limit_h; } } else if (func == "g") { // La funzione 'g' (grow), ingrandisce l'immagine fino al massimo // dei limiti se questa è più piccola if (w < limit_w && h < limit_h) { // L'immagine può essere ingrandita, ricalcola if (limit_w <= ((w * limit_h) / h)) { h = Convert.ToInt32((h * limit_w) / w); w = limit_w; } else { w = Convert.ToInt32((w * limit_h) / h); h = limit_h; } } // L'immagine non è più piccola dei limiti, imposta 'no function' else func = ""; } // L'immagine non supera le dimensioni massime, imposta 'no function' else func = ""; } } // Limite delle dimensioni minime, a scapito dell'aspect ratio if (w < 10) w = 10; if (h < 10) h = 10; Response.ContentType = "image/jpeg"; if (func == "") // 'no function' { // L'immagine non supera le dimensioni massime oppure lo zoom // corrisponde al 100%, output dell'immagine originale origImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); } else { // L'immagine deve essere ridimensionata con GetThumbnailImage() System.Drawing.Image newImage = origImage.GetThumbnailImage(w, h, null, IntPtr.Zero); newImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); newImage.Dispose(); } origImage.Dispose(); } catch (Exception ex) { Response.Write(ex.Message); } } </script>![]()

(nota: lo fa solo con alcune foto, penso sia un problema di codifica interna delle immagini jpg) Ho dunque letto che è meglio usare un altro metodo per il resize di immagini di una certa dimensione...mi sapete dunque indicare dove posso trovare uno script sostitutivo a quello che uso attualmente, cioè:
Rispondi quotando