我想从数据库中检索图像并根据用户需要裁剪它

时间:2011-05-11 09:24:03

标签: c# asp.net image-processing

我想裁剪从数据库中检索到的照片,我已完成以下操作以从数据库中检索图像

protected void Page_Load(object sender, EventArgs e)
{
    MemoryStream stream = new MemoryStream();
    SqlConnection connection = new SqlConnection(@"Data Source=localhost;Initial Catalog=card;User Id=sa;Password=db2admin;");
    try
    {
        connection.Open();
        SqlCommand command = new SqlCommand("select Photo from iffcar", connection);
        byte[] image = (byte[])command.ExecuteScalar();
        stream.Write(image, 0, image.Length);
        Bitmap bitmap = new Bitmap(stream);
        Response.ContentType = "image/gif";
        bitmap.Save(Response.OutputStream, ImageFormat.Jpeg);
    }
    catch (Exception ee)
    {
        connection.Close();
        stream.Close(); 
        HttpContext.Current.Response.Write(ee.Message);
    }
}

检索到的图像显示在浏览器中。

现在我被困在如何裁剪这个图像,我想让用户裁剪从数据库中检索到的图像并存储裁剪后的图像以传递给水晶报告。

这可能吗?如果有,那么有任何教程或帮助可以指导我达到我的最终要求。请帮助我理解如何继续我的查询

3 个答案:

答案 0 :(得分:1)

查看GDI +库以及System.Drawing命名空间。您也可以使用Windows Imaging Components。

Here's a basic walk-through

答案 1 :(得分:0)

您可以使用Bitmap类轻松调整图像大小,请查看此构造函数 - http://msdn.microsoft.com/en-us/library/0wh0045z.aspx

答案 2 :(得分:0)

填写??并尝试:

    connection.Open();
    SqlCommand command = new SqlCommand("select Photo from iffcar", connection);
    byte[] image = (byte[])command.ExecuteScalar();
    stream.Write(image, 0, image.Length);
    Bitmap bitmap = new Bitmap(stream);

    int croppedWidth = ??, croppedHeight = ??, cropOffsetX = ??, cropOffsetY = ??;
    var croppedBitmap = new Bitmap(croppedWidth, croppedHeight);
    var graphics = Graphics.FromImage(croppedBitmap);
    graphics.DrawImage(bitmap, -cropOffsetX, -cropOffsetY, bitmap.Width, bitmap .Height);
    Response.ContentType = "image/gif";
    croppedBitmap.Save(Response.OutputStream, ImageFormat.Jpeg);