从内存中检索图像,裁剪并将其再次保存在内存中

时间:2014-11-05 10:09:53

标签: jquery asp.net vb.net canvas

我正在使用JQuery Imazen.Crop裁剪图片。

以下是要求

  • 上传图片
  • 存储在内存中
  • 在画布上显示
  • On Crop buttom click事件将图像保存在内存中。

aspx页面

    <asp:Image ID="imgCanvass" CssClass="imageCanvass" runat="server" ImageUrl="~/photos/inspectors/5500-tmp.png" Width="500" Height="500" />
    <ic:CropImage ID="cropImage" runat="server" Image="imgCanvass" CanvasWidth="500"  FixedAspectRatio="true" X="100" Y="100" W="132" H="170" />

将上传的图像存储在流中并在画布中显示的代码。

 If filBrowse.HasFile Then
        fileExtension = System.IO.Path.GetExtension(filBrowse.FileName)

        Dim fs As Stream = filBrowse.PostedFile.InputStream
        Dim br As New BinaryReader(fs)
        Dim bytes As [Byte]() = br.ReadBytes(CInt(fs.Length))
        Dim base64String As String = Convert.ToBase64String(bytes, 0, bytes.Length)

        imgCanvass.ImageUrl = Convert.ToString("data:image/png;base64,") & base64String   
        Me.panelCanvass.Visible = True
    End If

我可以使用cropImage.Crop命令将图像物理存储在磁盘上,但我需要将其保存在内存中,这样当用户单击页面上的保存按钮时,我可以保存在磁盘上或数据库中。

我可以对裁剪网址值执行任何操作“data:image / png?crop = 261,43,461,203&amp; cropxunits = 500&amp; cropyunits = 400”

1 个答案:

答案 0 :(得分:0)

您可以将这些值与源流一起发送到ImageResizer,并将结果写入MemoryStream。

new ImageJob(sourceStream,memoryStream, new Instructions("crop=261,43,461,203&cropxunits=500&cropyunits=400")).Build();