allora,
questo è quello che uso io. Io avevo leggermente modificato la webresize v.021, ora ho visto che ne sono uscite altre versioni, quindi indubbiamente ti faccio vedere uno script vecchio (anche se efficace). Però è un passo avanti
allora, tu devi fare la seguente cosa:
- fai l'upload della tua immagine con il tuo script
- una volta che hai fatto l'upload, ti prendi il nome dell'immagine, e usi la funzione:
dove:codice:'************ gestione delle immagini function ImgResize(nomeImg,nNome,bw,bh, fromPath, destPath) dim objHTTP,url,statusCode set objHTTP=server.CreateObject("MSXML2.ServerXMLHTTP") dim targetFrom,targetTo targetFrom=server.URLEncode(fromPath & "/" & nomeImg) targetTo=server.URLEncode(destPath) nNome=server.URLEncode(nNome) url="http://www.tuosito.ext/percorso/wbresize.aspx?img=" & targetFrom & "&nn=" & nNome & "&bw=" & bw & "&bh=" & bh & "&fp=" & targetTo objHTTP.open "GET",url,false objHTTP.send("") statusCode=cint(objHTTP.responseXml.getElementsByTagName("stato/codice")(0).text) set objHTTP=nothing ImgResize=statusCode end function
nomeImg è il nome dell'immagine che hai caricato sul server
fromPath è il percorso dove si trova ora l'immagine (es server.mapPath("/public") )
bw e bh sono la larghezza e l'altezza dell'immagine da ridimensionare
nNome è il nome che vuoi dare alla immagine ridimensionata (se lo passi uguale a nomeImg, dovrebbe sovrascrivertela, non ricordo)
destPath è la cartella dove vuoi salvare l'immagine ridimensionata
la wbresize.aspx è la seguente:
se vuoi modificarti la funzione che la richiama, magari perchè ti serve un diverso comportamento, puoi modificarla tranquillamente leggendo anche in wbresize.aspx, all'inizio tra i commenti, come si usano i parametri che accetta la pagina.codice:<%@ Page Language="C#" AutoEventWireup="true" Debug="true" ContentType="text/xml" %> <%@ import Namespace="System.IO" %> <%@ import Namespace="System.Drawing" %> <%@ import Namespace="System.Drawing.Imaging" %> <script runat="server"> /* WBRESIZE 0.21 developer by imente 16/10/2006 modified by santino83 7/02/2007 parametri (da querystring): img = nome del file originale s = percentuale di ridimensionamento (es: 20) bw = larghezza fissata (la altezza viene calcolata di conseguenza per mantenere le dimensioni) bh = altezza fissata (la larghezza viene calcolata di conseguenza per mantenere le dimensioni) *** si può indicare S oppure W oppure H. se si indica S, W e H vengono ignorati. *** se si indica sia W che H viene forzato il ridimensionamento e non verranno rispettate le proporzioni c = compressione jpeg (valori da 1 a 100) *** se non impostata la compressione viene impostata a 100 fp = cartella dove salvare la thumb nn = nome della thumb (se non indicato genera thumb.jpg) */ void Page_Load(Object sender, EventArgs e) { // parametri string fileName = (Request.QueryString["img"]==null)?"":Request.QueryString["img"]; // nome del file originale string folder = (Request.QueryString["fp"]==null)?"":Request.QueryString["fp"]; // cartella dove salvare la thumb string newName = (Request.QueryString["nn"]==null)?"thumb.jpg":Request.QueryString["nn"]; // nuovo nome del file double requestedWidth = (Request.QueryString["bw"]==null)?0:Convert.ToDouble(Request.QueryString["bw"]); // larghezza impostata double requestedHeight = (Request.QueryString["bh"]==null)?0:Convert.ToDouble(Request.QueryString["bh"]); // altezza impostata int scaleFactor = (Request.QueryString["s"]==null)?0:Convert.ToInt32(Request.QueryString["s"]); // fattore di scalo per la miniatura int compression = (Request.QueryString["c"]==null)?100:Convert.ToInt32(Request.QueryString["c"]); // compressione (0-100) // variabili di servizio int originalWidth = 0; int originalHeight = 0; int thumbWidth = 0; int thumbHeight = 0; if ( fileName.Trim().Length>0 ) { try { //carica l'immagine e ne recupera le dimensioni System.Drawing.Image image; image = System.Drawing.Image.FromFile( Server.MapPath(fileName) ); originalWidth = image.Width; originalHeight = image.Height; image.Dispose(); image = null; //se una dimensione è più grande dell'immagine e l'altra no, //la diminuisce fino a renderla pari all'immagine if ( originalWidth > requestedWidth && originalHeight < requestedHeight ) requestedHeight = originalHeight; if ( originalWidth < requestedWidth && originalHeight > requestedHeight ) requestedWidth = originalWidth; if ( originalWidth >= requestedWidth && originalHeight >= requestedHeight && scaleFactor >= 0 && scaleFactor < 100 ) { //l'immagine è da ridimensionare: calcola le dimensioni della miniatura if ( scaleFactor == 0) { if ( requestedWidth == 0 && requestedHeight != 0) { // forzata requestedHeight thumbWidth = Convert.ToInt32(Math.Ceiling(requestedHeight*originalWidth/originalHeight)); thumbHeight = Convert.ToInt32(requestedHeight); } else if (requestedHeight == 0 && requestedWidth != 0) { // forzata requestedWidth thumbWidth = Convert.ToInt32(requestedWidth); thumbHeight = Convert.ToInt32(Math.Ceiling(requestedWidth*originalHeight/originalWidth)); } else if (requestedHeight != 0 && requestedWidth != 0) { // forzata sia requestedWidth che requestedHeight thumbWidth = Convert.ToInt32(requestedWidth); thumbHeight = Convert.ToInt32(requestedHeight); } else { // ERR: nessun parametro impostato error("Nessun parametro impostato"); return; } } else { // scalata: percentuale delle dimensioni thumbWidth = (originalWidth*scaleFactor/100); thumbHeight = (originalHeight*scaleFactor/100); } } else { // sovradimensionamento (si impostano le nuove dimensioni a 0 per evitare il ridimensionamento) thumbWidth = 0; thumbHeight = 0; } // esegue le operazioni di output if ( folder != "" ) { // output su file Resize(fileName,thumbWidth,thumbHeight,folder+"\\"+newName,compression); finish(); } else { //Errore nessun folder di destinazione indicato error("Nessun folder di destinazione indicato"); } } catch (System.IO.FileNotFoundException ex) { // ERR: immagine inesistente error("Immagine inesistente"); return; } catch (Exception ex) { error(ex.Message); } } else { // ERR: nessuna immagine indicata error("Nessuna immagine indicata"); return; } } private void error(String error) { // errore print(100, error); } private void finish() { print(200, "Immagine controllata correttamente"); } private void print(int status, String msg) { String printed; printed = @"<?xml version=""1.0"" encoding=""iso-8859-1""?>"; printed += @"<risposta><stato><codice>" + status + @"</codice><desc>" + msg + @"</desc></stato>"; printed += @"</risposta>"; Response.Write(printed); } private void Resize(string FileName, int requestedWidth, int requestedHeight, string NewFileName, int compression) { FileStream file=new FileStream(Server.MapPath(FileName),FileMode.Open); string NewFile = Server.MapPath(NewFileName); //creo il bitmap dallo stream System.Drawing.Image bmpStream=System.Drawing.Image.FromStream(file); //creo un nuovo bitmap Bitmap image; //controllo valori in entrata if (compression <= 0) compression = 100; //se indicato lo ridimensiono if (requestedWidth == 0 || requestedHeight == 0) image=new Bitmap(bmpStream); else image=new Bitmap(bmpStream,new Size(requestedWidth,requestedHeight)); ImageCodecInfo jpegCodecInfo; jpegCodecInfo = GetEncoderInfo("image/jpeg"); System.Drawing.Imaging.Encoder encoder; EncoderParameter encoderParameter; EncoderParameters encoderParameters; encoder = System.Drawing.Imaging.Encoder.Quality; encoderParameters = new EncoderParameters(1); encoderParameter = new EncoderParameter(encoder, compression); encoderParameters.Param[0] = encoderParameter; // output su file image.Save(NewFile, jpegCodecInfo, encoderParameters); encoderParameters = null; encoderParameter = null; encoder = null; jpegCodecInfo = null; image.Dispose(); image = null; file.Close(); file = null; } private ImageCodecInfo GetEncoderInfo(string mimeType) { ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders(); for (int j = 0; j< encoders.Length; j++) { if (encoders[j].MimeType == mimeType) { return encoders[j]; } } return null; } </script>
![]()

Rispondi quotando