public class RedimImg
{
string pathPhisical; //Path dell'immagine grande
string nomeFile; // Nome del file
int width; // larghezza immagine
int height; // altezza immagine
string percorsoThumb; //cartellina dove salvare la thumb
// Costruttore a cui passo i 5 parametri che inizializzano i
// membri privati
public RedimImg(string par_path, string par_nomeFile, int par_width, int par_height, string par_thumb)
{
pathPhisical = par_path;
nomeFile = par_nomeFile;
width = par_width;
height = par_height;
percorsoThumb = par_thumb;
}
// Il metodo ridimensiona l'immagine con un logo
public void RidimensionaConLogo(
String _pathLogo
)
{
// Immagine da ridurre
Bitmap bmpFile = ((Bitmap)(Image.FromFile(HttpContext.Current.Server.MapPath(pathPhisical))));
// Logo da applicare
Bitmap Logo = new Bitmap(HttpContext.Current.Server.MapPath(_pathLogo));
int HLogo;
int WLogo;
if (width > 0 || height > 0)
{
//se specificata solo la larghezza calcolo l'altezza dell'immagine
if (height == 0)
height = Convert.ToInt32((width * bmpFile.Height) / bmpFile.Width);
//viceversa calcolo la larghezza dell'immagine
if (width == 0)
width = Convert.ToInt32((height * bmpFile.Width) / bmpFile.Height);
// creo la Thumbnail con i parametri impostati
Bitmap miniatura = new Bitmap(bmpFile, width, height);
/*Aggiungo il logo ************************************* */
//Calcolo le dimensioni del logo in proporzione//
//calcolo l'altezza del logo
HLogo = (height * Logo.Height) / bmpFile.Height;
// calcolo la larghezza del logo
WLogo = (width * Logo.Width) / bmpFile.Width;
Graphics graphicImage = Graphics.FromImage(miniatura);
graphicImage.SmoothingMode = SmoothingMode.HighQuality;
graphicImage.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphicImage.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphicImage.CompositingQuality = CompositingQuality.HighQuality;
// Calcolo posizione in basso a dx
int X = miniatura.Width - WLogo - 5;
int Y = miniatura.Height - HLogo - 5;
Rectangle rec = new Rectangle(new Point(X, Y), new Size(WLogo, HLogo));
graphicImage.DrawImage(Logo, rec);
/* ************************************* */
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
ImageCodecInfo myImageCodecInfo;
// Paramentro per la Qualit
myEncoder = Encoder.Quality;
// Lo aggiungo all'array di parametri
myEncoderParameters = new EncoderParameters(1);
// Qualit da 0 a 100 (0 bassa, 100 alta)
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
/* ************************************* */
if (nomeFile.ToLower().EndsWith(".jpg"))
{
// Ottengo un oggetto ImageCodecInfo che rappresenta il codec in esame
myImageCodecInfo = GetEncoderInfo("image/jpeg");
if (percorsoThumb == "")
miniatura.Save(HttpContext.Current.Response.OutputStream, myImageCodecInfo, myEncoderParameters);
else
miniatura.Save(HttpContext.Current.Server.MapPath(percorsoThumb + "/" + nomeFile), myImageCodecInfo, myEncoderParameters);
}
else
{
myImageCodecInfo = GetEncoderInfo("image/gif");
if (percorsoThumb == "")
miniatura.Save(HttpContext.Current.Response.OutputStream, myImageCodecInfo, myEncoderParameters);
else
miniatura.Save(HttpContext.Current.Server.MapPath(percorsoThumb + "/" + nomeFile), myImageCodecInfo, myEncoderParameters);
}
miniatura.Dispose();
}
bmpFile.Dispose();
}
private ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
}
{
string pathPhisical; //Path dell'immagine grande
string nomeFile; // Nome del file
int width; // larghezza immagine
int height; // altezza immagine
string percorsoThumb; //cartellina dove salvare la thumb
// Costruttore a cui passo i 5 parametri che inizializzano i
// membri privati
public RedimImg(string par_path, string par_nomeFile, int par_width, int par_height, string par_thumb)
{
pathPhisical = par_path;
nomeFile = par_nomeFile;
width = par_width;
height = par_height;
percorsoThumb = par_thumb;
}
// Il metodo ridimensiona l'immagine con un logo
public void RidimensionaConLogo(
String _pathLogo
)
{
// Immagine da ridurre
Bitmap bmpFile = ((Bitmap)(Image.FromFile(HttpContext.Current.Server.MapPath(pathPhisical))));
// Logo da applicare
Bitmap Logo = new Bitmap(HttpContext.Current.Server.MapPath(_pathLogo));
int HLogo;
int WLogo;
if (width > 0 || height > 0)
{
//se specificata solo la larghezza calcolo l'altezza dell'immagine
if (height == 0)
height = Convert.ToInt32((width * bmpFile.Height) / bmpFile.Width);
//viceversa calcolo la larghezza dell'immagine
if (width == 0)
width = Convert.ToInt32((height * bmpFile.Width) / bmpFile.Height);
// creo la Thumbnail con i parametri impostati
Bitmap miniatura = new Bitmap(bmpFile, width, height);
/*Aggiungo il logo ************************************* */
//Calcolo le dimensioni del logo in proporzione//
//calcolo l'altezza del logo
HLogo = (height * Logo.Height) / bmpFile.Height;
// calcolo la larghezza del logo
WLogo = (width * Logo.Width) / bmpFile.Width;
Graphics graphicImage = Graphics.FromImage(miniatura);
graphicImage.SmoothingMode = SmoothingMode.HighQuality;
graphicImage.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphicImage.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphicImage.CompositingQuality = CompositingQuality.HighQuality;
// Calcolo posizione in basso a dx
int X = miniatura.Width - WLogo - 5;
int Y = miniatura.Height - HLogo - 5;
Rectangle rec = new Rectangle(new Point(X, Y), new Size(WLogo, HLogo));
graphicImage.DrawImage(Logo, rec);
/* ************************************* */
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
ImageCodecInfo myImageCodecInfo;
// Paramentro per la Qualit
myEncoder = Encoder.Quality;
// Lo aggiungo all'array di parametri
myEncoderParameters = new EncoderParameters(1);
// Qualit da 0 a 100 (0 bassa, 100 alta)
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
/* ************************************* */
if (nomeFile.ToLower().EndsWith(".jpg"))
{
// Ottengo un oggetto ImageCodecInfo che rappresenta il codec in esame
myImageCodecInfo = GetEncoderInfo("image/jpeg");
if (percorsoThumb == "")
miniatura.Save(HttpContext.Current.Response.OutputStream, myImageCodecInfo, myEncoderParameters);
else
miniatura.Save(HttpContext.Current.Server.MapPath(percorsoThumb + "/" + nomeFile), myImageCodecInfo, myEncoderParameters);
}
else
{
myImageCodecInfo = GetEncoderInfo("image/gif");
if (percorsoThumb == "")
miniatura.Save(HttpContext.Current.Response.OutputStream, myImageCodecInfo, myEncoderParameters);
else
miniatura.Save(HttpContext.Current.Server.MapPath(percorsoThumb + "/" + nomeFile), myImageCodecInfo, myEncoderParameters);
}
miniatura.Dispose();
}
bmpFile.Dispose();
}
private ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
}


0 commenti
Posta un commento