按钮代码:
protected void Button1_Click(object sender, EventArgs e)
{
Stream imgDataStream = FileUpload1.PostedFile.InputStream;
int imgDataLen = FileUpload1.PostedFile.ContentLength;
string Caption = TextBox1.Text;
byte[] BytesOriginal = new byte[imgDataLen];
int n = imgDataStream.Read(BytesOriginal, 0, imgDataLen);
AddPhoto(1, Caption, BytesOriginal);
Label1.Text = "Image is uploaded";
}
引用其他方法代码:
public static void AddPhoto(int AlbumID, string Caption, byte[] BytesOriginal)
{
SqlConnection connetion = new SqlConnection(ConfigurationManager.ConnectionStrings["PERSONAL"].ConnectionString);
string sql = "insert into [Photos] ([AlbumID],[BytesOriginal],[Caption],[BytesFull],[BytesPoster],[BytesThumb])" +
"values (@AlbumID,@BytesOriginal,@Caption,@BytesFull,@BytesPoster,@BytesThumb)";
SqlCommand command = new SqlCommand(sql, connetion);
command.Parameters.Add(new SqlParameter("@AlbumID", AlbumID));
command.Parameters.Add(new SqlParameter("@Caption", Caption));
command.Parameters.Add(new SqlParameter("@BytesOriginal", BytesOriginal));
command.Parameters.Add(new SqlParameter("@BytesFull", ResizeImageFile(BytesOriginal, 600)));
command.Parameters.Add(new SqlParameter("@BytesPoster", ResizeImageFile(BytesOriginal, 198)));
command.Parameters.Add(new SqlParameter("@BytesThumb", ResizeImageFile(BytesOriginal, 100)));
connetion.Open();
command.ExecuteNonQuery();
}
private static byte[] ResizeImageFile(byte[] imageFile, int targetSize)
{
System.Drawing.Image oldImage = System.Drawing.Image.FromStream(new MemoryStream(imageFile));
Size newSize = CalculateDimensions(oldImage.Size, targetSize);
Bitmap newImage = new Bitmap(newSize.Width, newSize.Height, PixelFormat.Format24bppRgb);
Graphics canvas = Graphics.FromImage(newImage);
canvas.SmoothingMode = SmoothingMode.AntiAlias;
canvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
canvas.PixelOffsetMode = PixelOffsetMode.HighQuality;
canvas.DrawImage(oldImage, new Rectangle(new Point(0, 0), newSize));
MemoryStream m = new MemoryStream();
newImage.Save(m, ImageFormat.Jpeg);
return m.GetBuffer();
}
private static Size CalculateDimensions(Size oldSize, int targetSize)
{
Size newSize = new Size();
if (oldSize.Height > oldSize.Width)
{
newSize.Width = (int)(oldSize.Width * ((float)targetSize / (float)oldSize.Height));
newSize.Width = targetSize;
}
else
{
newSize.Width = targetSize;
newSize.Height = (int)(oldSize.Height * ((float)targetSize / (float)oldSize.Width));
}
return newSize;
}