usando System.IO;
usando System.Drawing.Imaging;
Private void Button1_ServerClick (remitente del objeto, System.EventArgs e)
{
Gráficos g=nulo;
System.Drawing.Image upimage=null;
System.Drawing.Image thumimg=null;
System.Drawing.Image simage=null;
Archivo de salida de mapa de bits = nulo;
intentar
{
extensión de cadena = Path.GetExtension(File1.PostedFile.FileName).ToUpper();
nombre de archivo de cadena = DateTime.Now.ToString("aaaaMMddhhmmss");
cadena pequeña ruta = Server.MapPath(".")+"/smallimg/";
cadena bigpath = Server.MapPath(".")+"/bigimg/";
int ancho, alto, nuevo ancho, nuevo alto;
System.Drawing.Image.GetThumbnailImageAbort callb =new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
if(!Directorio.Existe(rutapequeña))
Directorio.CreateDirectory(rutapequeña);
if(!Directorio.Existe(rutagrande))
Directorio.CreateDirectory(rutagrande);
Transmitir upimgfile = File1.PostedFile.InputStream;
cadena simagefile = Server.MapPath("a8logo.jpg"); //要加水印的文件
simage=System.Drawing.Image.FromFile(simagefile);
upimage= System.Drawing.Image.FromStream(upimgfile); //上传的图片
width = upimage.Width;
altura = upimage.Altura;
si(ancho>alto)
{
nuevo ancho = 200;
nueva altura =(int)((doble)altura/(doble)ancho * (doble)nuevoancho);
}
demás
{
nueva altura = 200;
nuevoancho=(int)((doble)ancho/(doble)alto * (doble)nuevoalto);
}
thumimg = upimage.GetThumbnailImage(nuevo ancho, nueva altura, callb, IntPtr.Zero);
archivo de salida = nuevo mapa de bits (imagen superior);
g=Graphics.FromImage(archivo de salida);
g.DrawImage(imagen,nuevo rectángulo(upimage.Width-simage.Width,upimage.Height-simage.Height,upimage.Width,upimage.Height),0,0,upimage.Width,upimage.Height,GraphicsUnit.Pixel) ;
cadena nueva ruta = ruta grande + nombre de archivo + extensión; //原始图路径
string thumpath = ruta pequeña + nombre de archivo + extensión; //缩略图路径
archivo de salida. Guardar (nueva ruta);
thumimg.Save(thumpath);
archivo de salida.Dispose();
}
captura (Excepción ex)
{
tirar ex;
}
finalmente
{
si(g!=nulo)
g.Dispose();
si(thumimg!=null)
thumimg.Dispose();
si (imagen superior! = nulo)
upimage.Dispose();
si (imagen! = nulo)
imagen.Dispose();
}
}
público bool ThumbnailCallback()
{
devolver falso;
}