2009-06-20 20 views
1

ASP.NET C#では、サーバーに保存されたオブジェクトを切り取る方法を教えてください。画像の左側から10ピクセルを削除します。事前に感謝ASP.NET C#:画像を切り抜く

+0

githubの上でデモを取り組んでいます。問題は、HTMLでイメージをトリミングする方法です。 –

+0

重複: http://stackoverflow.com/questions/794709/c-crop-an-image-at-small-top-portion と同様に http://stackoverflow.com/questions/734930/how -to-crop-an-image-using-c – womp

答えて

-1

ここでは、コード・ソリューション

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
<link href="css/jquery.Jcrop.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
<script type="text/javascript" src="js/jquery.Jcrop.js"></script> 
</head> 
<body> 
    <form id="form2" runat="server"> 
    <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> 
    </form> 
    <script type="text/javascript"> 
    jQuery(document).ready(function() { 
    jQuery('#imgCrop').Jcrop({ 
     onSelect: storeCoords 
    }); 
    }); 

    function storeCoords(c) { 
    jQuery('#X').val(c.x); 
    jQuery('#Y').val(c.y); 
    jQuery('#W').val(c.w); 
    jQuery('#H').val(c.h); 
    }; 

</script> 
</body> 
</html> 
アップロードおよびクロップ画像について

C#コード。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.IO; 
using SD = System.Drawing; 
using System.Drawing.Imaging; 
using System.Drawing.Drawing2D; 

namespace WebApplication1 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     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); 
      } 
     } 
    } 
} 

ここでは、ASP.NETは、HTMLページを生成するための方法であることを忘れないでください

https://github.com/SystematixIndore/Crop-SaveImageInCSharp

+0

私はここでもコンテンツとコードを更新しました。 –

関連する問題