Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [1.1-C#] ridimensionamento e compressione immagini

    ho strutturato un sistema di ridimensionamento (che pubblicherò se interessa a breve) semplice ma molto utile (almeno a me )

    dopo averlo finito ho notato che la compressione jpeg era impostata molto bassa e non era personalizzabile.

    ho cercato sul forum ma ho trovato soluzioni VB.net, e così anche su internet.
    allora mi sono messo di buzzo buono (da buon niubbo) e ho costruito una piccola funzione che fa il resize e gestisce la compressione

    spero possa venir utile a qualcuno.

    inoltre vorrei chiedere, a chi in campo asp.net è stimabile, se questo script è scritto bene oppure se ci sono degli errori o delle imperfezioni di forma.

    (ovviamente per testarlo vi serve una immagine che si chiami MYIMAGE.JPG nella cartella dove mettete lo script, dovete poi togliere il commento da una delle linee nel Page_Load e volendo usare la funzione di salvataggio su file impostare dove serve i permessi di lettura)

    dimenticavo, è il mio primo post in asp.net (che sto cominciando ad imparare)
    un saluto a tutti da imente

    codice:
    <%@ Page Language="C#"%>
    <%@ import Namespace="System.IO" %>
    <%@ import Namespace="System.Drawing" %>
    <%@ import Namespace="System.Drawing.Imaging" %>
    <script runat="server">
    
    void Page_Load(Object sender, EventArgs e) {
    	
    	//visualizzo in output l'immagine non ridimensionata con qualità 75
    	//ResizeFile("myimage.jpg",0,0,"",75);
    	
    	//visualizzo in output l'immagine non ridimensionata con qualità 50
    	//ResizeFile("myimage.jpg",0,0,"",50);
    	
    	//visualizzo in output l'immagine ridimensionata a 100X100px con qualità 50
    	//ResizeFile("myimage.jpg",100,100,"",50);
    	
    	//salvo l'immagine col nome "thumb.jpg" non ridimensionata con qualità 75
    	//ResizeFile("myimage.jpg",0,0,"thumb.jpg",75);
    	
    	//salvo l'immagine col nome "thumb.jpg" ridimensionata a 100X100px con qualità 75
    	//ResizeFile("myimage.jpg",100,100,"",50);
    	
    }
    
    
    private void Resize(Stream imgStr, int width, int height, string FileName, int compression) {
    
    	//creo il bitmap dallo stream
    	System.Drawing.Image bmpStream=System.Drawing.Image.FromStream(imgStr);
    	
    	//creo un nuovo bitmap
    	Bitmap img;
    	
    	//controllo valori in entrata
    	if (compression == 0) compression = 100;
    	
    	//se indicato lo ridimensiono
    	if (width == 0 || height == 0) img=new Bitmap(bmpStream);
    	else img=new Bitmap(bmpStream,new Size(width,height));
    	
    	ImageCodecInfo jpegCodecInfo;
    	System.Drawing.Imaging.Encoder encoder;
    	EncoderParameter encoderParameter;
    	EncoderParameters encoderParameters;
    	jpegCodecInfo = GetEncoderInfo("image/jpeg");
    	encoder = System.Drawing.Imaging.Encoder.Quality;
    	encoderParameters = new EncoderParameters(1);
    	encoderParameter = new EncoderParameter(encoder, compression);
    	encoderParameters.Param[0] = encoderParameter;
    	if (FileName == "") {
    		img.Save(FileName, jpegCodecInfo, encoderParameters);
    	} else {
    		Response.ContentType = "image/jpeg";
    		img.Save(Response.OutputStream, jpegCodecInfo, encoderParameters);
    	}
    	img.Dispose();
    	img = null;
    
    }
    
    private void ResizeFile(string nomefile,int width, int height, string nuovonome, int compression) {
    
    	//carico un'immagine in uno stream
    	try {
    		FileStream file=new FileStream(Server.MapPath(nomefile),FileMode.Open);
    		Resize(file,width,height,Server.MapPath(nuovonome),compression);
    		file.Close();
    	} catch (System.IO.FileNotFoundException ex) {
    		Response.Write("l'immagine non esiste");
    	}
    
    }
    
    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>
    san imente saluta

    * http://simonecingano.it *

  2. #2
    oddio imente mo cominci pure sul forum .net? e pensare che eri partito con l'ida di usare una dll per il resize
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.