Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Encoder immagini

  1. #1

    Encoder immagini

    Sto usando uno script in C# per ridimensionare delle immagini, tutto bene se non per il fatto che mi escono a 96 dpi rispetto alle 72 dpi dell'originale. Come si può fare per avere un'immagine di 72 dpi?
    Questo lo script:
    codice:
    <%@ Page Language="C#" debug="true"%>
    <%@ import Namespace="System.IO" %>
    <%@ import Namespace="System.Drawing" %>
    <%@ import Namespace="System.Drawing.Imaging" %>
    <script runat="server">
    
    void Page_Load(Object sender, EventArgs e) {
    	int MaxWidth = Convert.ToInt32(Request.QueryString["width"]);
    //	int MaxHeight;
    	int MaxHeight = Convert.ToInt32(Request.QueryString["height"]);
    //	string imgFileName;
    	string imgFileName = Request.QueryString["imgFile"];
    	string[] arrNome = imgFileName.Split('.');
    	//visualizzo in output l'immagine non ridimensionata con qualità 75
    	ResizeFile(imgFileName,800,600,arrNome[0]+"_1."+arrNome[1],50);
    	ResizeFile(imgFileName,640,480,arrNome[0]+"_2."+arrNome[1],50);
    	ResizeFile(imgFileName,400,300,arrNome[0]+"_3."+arrNome[1],50);
    	
    	//visualizzo in output l'immagine non ridimensionata con qualità 50
    	//ResizeFile("public/Bulk/feste studentesche/mandrillo 7dicembre.JPG",0,0,"",50);
    	
    	//visualizzo in output l'immagine ridimensionata a 100X100px con qualità 50
    	//ResizeFile("public/Bulk/feste studentesche/mandrillo 7dicembre.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);
    	int DimOrizz = Convert.ToInt32(bmpStream.Width); //Larghezza di partenza
    	int DimVert = Convert.ToInt32(bmpStream.Height); //Altezza di partenza
    	int DimOrizzFinale; //= 300;
    	int DimVertFinale; //= 300;
    	
    	//creo un nuovo bitmap
    	Bitmap img;
    	
    	//controllo valori in entrata
    	if (compression == 0) compression = 100;
    	
    	if (DimOrizz > width) {
    		DimOrizzFinale = width;
    		DimVertFinale = Convert.ToInt32((DimOrizzFinale*DimVert)/DimOrizz);
    		if (height > 0) {
    			if (DimVertFinale > height) {
    				DimVertFinale = height;
    				DimOrizzFinale = Convert.ToInt32((DimOrizz*DimVertFinale)/DimVert);
    			}
    		}
    	}
    	else {
    		if (DimVert > height) {
    			DimVertFinale = height;
    			//DimOrizzFinale = Convert.ToInt32((height / DimVert) * DimOrizz);
    			DimOrizzFinale = Convert.ToInt32((DimOrizz*DimVertFinale)/DimVert);
    		}
    		else {
    			DimOrizzFinale = DimOrizz;
    			DimVertFinale = DimVert;
    		}
    	}
    	
    	//DimOrizzFinale = 800;
    	//DimVertFinale = 800;
    	
    	//se indicato lo ridimensiono
    	if (width == 0 || height == 0) img=new Bitmap(bmpStream);
    	else img=new Bitmap(bmpStream,new Size(DimOrizzFinale,DimVertFinale));
    	
    	
    	
    	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>
    Grazie mille
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    //se indicato lo ridimensiono
    if (width == 0 || height == 0) img = new Bitmap(bmpStream);
    else img = new Bitmap(bmpStream, new Size(DimOrizzFinale, DimVertFinale));

    img.SetResolution(bmpStream.HorizontalResolution, bmpStream.VerticalResolution);
    Pietro

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.