System.IO を使用します。
System.Drawing.Imaging を使用します。
private void Button1_ServerClick(オブジェクト送信者、System.EventArgs e)
{
グラフィックス g=null;
System.Drawing.Image upimage=null;
System.Drawing.Image thumimg=null;
System.Drawing.Image simage=null;
ビットマップ出力ファイル = null;
試す
{
文字列拡張子 = Path.GetExtension(File1.PostedFile.FileName).ToUpper();
文字列ファイル名 = DateTime.Now.ToString("yyyyMMddhhmmss");
文字列 smallpath = Server.MapPath(".")+"/smallimg/";
文字列 bigpath = Server.MapPath(".")+"/bigimg/";
int 幅、高さ、新しい幅、新しい高さ;
System.Drawing.Image.GetThumbnailImageAbort callb =new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
if(!Directory.Exists(smallpath))
Directory.CreateDirectory(smallpath);
if(!Directory.Exists(bigpath))
Directory.CreateDirectory(bigpath);
ストリーム upimgfile = File1.PostedFile.InputStream;
文字列 simagefile = Server.MapPath("a8logo.jpg"); //要加水印の文書
simage=System.Drawing.Image.FromFile(simagefile);
upimage= System.Drawing.Image.FromStream(upimgfile); // 上の画像
の幅 = upimage.Width;
高さ = upimage.Height;
if(幅>高さ)
{
新しい幅=200;
newheight =(int)((double)height/(double)width * (double)newwidth);
}
それ以外
{
新しい高さ=200;
newwidth=(int)((double)width/(double)height * (double)newheight);
}
thumimg = upimage.GetThumbnailImage(newwidth,newheight,callb,IntPtr.Zero);
出力ファイル=新しいビットマップ(アップイメージ);
g=グラフィックス.FromImage(出力ファイル);
g.DrawImage(simage,new Rectangle(upimage.Width-simage.Width,upimage.Height-simage.Height,upimage.Width,upimage.Height),0,0,upimage.Width,upimage.Height,GraphicsUnit.Pixel) ;
文字列 newpath = bigpath + ファイル名 + 拡張子; // 原始線路
文字列 thumpath = smallpath + ファイル名 + 拡張子; //缩略图路径
出力ファイル.保存(新しいパス);
thumimg.Save(thumpath);
出力ファイル.Dispose();
}
catch(例外例)
{
元を投げます。
}
ついに
{
if(g!=null)
g.Dispose();
if(thumimg!=null)
thumimg.Dispose();
if(アップイメージ!=null)
upimage.Dispose();
if(simage!=null)
simage.Dispose();
}
}
public bool ThumbnailCallback()
{
false を返します。
}