zoukankan      html  css  js  c++  java
  • UploadAndCrop 图片裁剪

    学无止境 曾祥展 
    <link href="css/jquery.Jcrop.css" rel="stylesheet" type="text/css" />
    
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/jquery.Jcrop.min.js"></script>
    <script type="text/javascript">
    
      $(document).ready(function() {
        $('#imgCrop').Jcrop({
            onSelect: storeCoords
        });
    
      });
     
      function storeCoords(c) {
    
        $('#X').val(c.x);
    
        $('#Y').val(c.y);
    
        $('#W').val(c.w);
    
        $('#H').val(c.h);
    
      };
    
    
    </script>

    <div>
    
        <asp:Panel ID="pnlUpload" runat="server">
        
          <asp:FileUpload ID="Upload" runat="server" />      <br />
          
          <asp:Button ID="btnUpload" runat="server" OnClick="btnUpload_Click" Text="Upload" />
          
          <asp:Label ID="lblError" runat="server" Visible="false" />
          
        </asp:Panel>
    
        <asp:Panel ID="pnlCrop" runat="server" Visible="false">
        
          <asp:Image ID="imgCrop" runat="server" />      <br />
    
          <asp:HiddenField ID="X" runat="server" />
    
          <asp:HiddenField ID="Y" runat="server" />
    
          <asp:HiddenField ID="W" runat="server" />
    
          <asp:HiddenField ID="H" runat="server" />
    
          <asp:Button ID="btnCrop" runat="server" Text="Crop" OnClick="btnCrop_Click" />
    
        </asp:Panel>
    
        <asp:Panel ID="pnlCropped" runat="server" Visible="false">
    
          <asp:Image ID="imgCropped" runat="server" />
    
        </asp:Panel>
    
      </div>

    using System.IO;
    using SD=System.Drawing;
    using System.Drawing.Imaging;
    using System.Drawing.Drawing2D;

    String path = HttpContext.Current.Request.PhysicalApplicationPath + "images\\";
    
       protected void Page_Load(object sender, EventArgs e)
       {
       }
       
       protected void btnUpload_Click(object sender, EventArgs e)
       {
           Boolean FileOK = false;
           Boolean FileSaved = false;
           if (Upload.HasFile)
           {
               Session["WorkingImage"] = Upload.FileName;            
               String FileExtension = Path.GetExtension(Session["WorkingImage"].ToString()).ToLower();
               String[] allowedExtensions = { ".png", ".jpeg", ".jpg", ".gif" };
               for (int i = 0; i < allowedExtensions.Length; i++)
               {
                   if (FileExtension == allowedExtensions[i])
                   {
                       FileOK = true;
                   }
               }
           }
           if (FileOK)
           {
               try
               {
                   Upload.PostedFile.SaveAs(path + Session["WorkingImage"]);
                   FileSaved = true;
               }
               catch (Exception ex)
               {
                   lblError.Text = "File could not be uploaded." + ex.Message.ToString();
                   lblError.Visible = true;
                   FileSaved = false;
               }
           }
           else
           {
               lblError.Text = "Cannot accept files of this type.";
               lblError.Visible = true;
           }
           
           if (FileSaved)
           {
               pnlUpload.Visible = false;            
               pnlCrop.Visible = true;
               imgCrop.ImageUrl = "images/" + Session["WorkingImage"].ToString();
           }
       }
    
    
    
      protected void btnCrop_Click(object sender, EventArgs e)
      {
          string ImageName = Session["WorkingImage"].ToString();
          int w = Convert.ToInt32(W.Value);
          int h = Convert.ToInt32(H.Value);
          int x = Convert.ToInt32(X.Value);
          int y = Convert.ToInt32(Y.Value);
          byte[] CropImage = Crop(path + ImageName, w, h, x, y);
          using (MemoryStream ms = new MemoryStream(CropImage, 0, CropImage.Length))
          {
              ms.Write(CropImage, 0, CropImage.Length);
              using (SD.Image CroppedImage = SD.Image.FromStream(ms, true))
              {
                  string SaveTo = path + "crop" + ImageName;
                  CroppedImage.Save(SaveTo, CroppedImage.RawFormat);
                  pnlCrop.Visible = false;
                  pnlCropped.Visible = true;
                  imgCropped.ImageUrl = "images/crop" + ImageName;
              }
          }
      }
       
       static byte[] Crop(string Img, int Width, int Height, int X, int Y)
       {
           try
           {
               using (SD.Image OriginalImage = SD.Image.FromFile(Img))
               {                
                   using (SD.Bitmap bmp = new SD.Bitmap(Width, Height))
                   {
                       bmp.SetResolution(OriginalImage.HorizontalResolution, OriginalImage.VerticalResolution);                    
                       using (SD.Graphics Graphic = SD.Graphics.FromImage(bmp))
                       {
                          Graphic.SmoothingMode = SmoothingMode.AntiAlias;
                          Graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
                          Graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
                          Graphic.DrawImage(OriginalImage, new SD.Rectangle(0, 0, Width, Height), X, Y, Width, Height, SD.GraphicsUnit.Pixel);
                          MemoryStream ms = new MemoryStream();
                          bmp.Save(ms, OriginalImage.RawFormat);
                          return ms.GetBuffer();
                      }
                  }
              }
          }
           catch (Exception Ex)
           {
               throw (Ex);
           }
       }
  • 相关阅读:
    python列表解析和正同表达式
    python实现屏幕截图
    pngCanvas 是一个使用纯Python代码的生成png图像的工具
    windows 7 提示升级到windows 10补丁
    openerp所用QWEB2的调试笔记
    修改 Ubuntu 13.04 LAMP 服务器端口号
    DEB方式在UBUNTU安装ODOO 8.0
    在openerp撰写消息中增加图片
    ubuntu挂载3T新硬盘并更换home分区
    MPEG-4 压缩编码标准
  • 原文地址:https://www.cnblogs.com/zengxiangzhan/p/1633644.html
Copyright © 2011-2022 走看看