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