一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - Asp.Net平臺下的圖片在線裁剪功能的實現代碼(源碼打包)

Asp.Net平臺下的圖片在線裁剪功能的實現代碼(源碼打包)

2019-09-20 14:05asp.net教程網 ASP.NET教程

最近項目中有個圖片在線裁剪功能,本人查找資料,方法如下:前臺展現用jquery.Jcrop實現,后臺使用 System.Drawing.Image類來進行裁剪

1.前臺展現實現 

網上找到這個jquery.Jcrop,稍看了下,發現它提供的效果完全能滿足項目需求. 

官方網址:http://deepliquid.com/content/Jcrop.html,感興趣的朋友可去看看. 

頁面先引用相關樣式和腳本: 

復制代碼代碼如下:


<link href="Styles/jquery.Jcrop.css" rel="stylesheet" type="text/css" /> 
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
<script src="Scripts/jquery.Jcrop.js" type="text/javascript"></script> 


頁面body部分代碼: 

復制代碼代碼如下:


<asp:Label ID="Label1" Text="原始圖片" runat="server"></asp:Label><br /> 
<asp:Image ID="target" runat="server" /> 
<br /> 
<asp:Label ID="Label2" runat="server" Text="最終顯示效果"></asp:Label> 
<div id="preImg" style="width: 150px; height: 80px; overflow: hidden;"> 
<asp:Image ID="preview" /> 其中ID為preImg的Style的width和height的值是裁剪圖片的尺寸,而且要定義這個DIV的overflow:hidden.能夠及時看到圖片的裁剪效果的關鍵CSS屬性就是它了. 

接下來講講jquery.Jcrop.js的基本用法,及相關javascript的實現. 

首先定義一些臨時變量,來保存相關參數 

var jcrop_api, boundx, boundy; 

然后給圖片的DOM元素綁定Jcrop功能,相關的方法屬性看英文就能明白其中的意思. 

復制代碼代碼如下:


$('#target').Jcrop({ 
onChange: updatePreview, 
onSelect: updatePreview, 
onRelease: clearCoords, 
aspectRatio: 150 / 80, 
minSize: _minarray, 
setSelect: _array 
}, function () { 
var bounds = this.getBounds(); 
boundx = bounds[0]; 
boundy = bounds[1]; 
jcrop_api = this; 
}); 
//此方法是用來及時展現圖片裁剪效果 
function updatePreview(c) { 
if (parseInt(c.w) > 0) { 
var rx = 150 / c.w; 
var ry = 80 / c.h; 
var _width; 
var _height; 
if (Math.round(rx * boundx) > $targetImg.width()) { 
_width = $targetImg.width(); 

else { 
_width = Math.round(rx * boundx); 

if (Math.round(ry * boundy) > $targetImg.height()) { 
_height = $targetImg.height(); 

else { 
_height = Math.round(ry * boundy); 

$('#preview').css({ 
width: _width + 'px', 
height: _height + 'px', 
marginLeft: '-' + Math.round(rx * c.x) + 'px', 
marginTop: '-' + Math.round(ry * c.y) + 'px' 
}); 

$('#x1').val(c.x); 
$('#y1').val(c.y); 
$('#Iwidth').val(c.w); 
$('#Iheight').val(c.h); 
}; 


另一部分前臺代碼: 

復制代碼代碼如下:


<form id="Form1" runat="server"> 
<asp:HiddenField ID="HdnNewImgPath" runat="server" /> 
<asp:HiddenField ID="x1" runat="server" /> 
<asp:HiddenField ID="y1" runat="server" /> 
<asp:HiddenField ID="Iwidth" runat="server" /> 
<asp:HiddenField ID="Iheight" runat="server" /> 
<br /> 
<asp:Button ID="SaveImg" runat="server" Text="裁剪并保存圖片" OnClick="saveImg" OnClientClick="return CheckIMG()" /> 
</form> 


后臺代碼的實現: 
首先引用相關命名空間 

復制代碼代碼如下:


using System.Drawing; 
using System.Drawing.Imaging; 
using System.Drawing.Design; 


保存按鈕的方法,從頁面取到相關參數,然后調用裁剪方法. 

復制代碼代碼如下:


protected void saveImg(object sender, EventArgs e) 

if (IsPostBack) 

string tempurl = Path.Combine(ConfigAccess.UploadImagePath, _url); 
int startX = int.Parse(x1.Value); 
int startY = int.Parse(y1.Value); 
int width = int.Parse(Iwidth.Value); 
int height = int.Parse(Iheight.Value); 
ImgReduceCutOut(startX, startY, width, height, tempurl, tempurl); 
this.target.Visible = false; 
this.Label1.Visible = false; 
this.SaveImg.Enabled = false; 


接下是最重要的裁剪方法: 

復制代碼代碼如下:


//通過連接創建Image對象 
System.Drawing.Image oldimage = System.Drawing.Image.FromFile(input_ImgUrl); 
oldimage.Save(Server.MapPath("temp.jpg"));//把原圖Copy一份出來,然后在temp.jpg上進行裁剪,最后把裁剪后的圖片覆蓋原圖 oldimage.Dispose();//一定要釋放臨時圖片,要不之后的在此圖上的操作會報錯,原因沖突 Bitmap bm = new Bitmap(Server.MapPath("temp.jpg")); 
//處理JPG質量的函數 
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); 
ImageCodecInfo ici = null; 
foreach (ImageCodecInfo codec in codecs) 

if (codec.MimeType == "image/jpeg") 

ici = codec; 
break; 


EncoderParameters ep = new EncoderParameters(); 
ep.Param[0] = new EncoderParameter(Encoder.Quality, (long)level); 
// 裁剪圖片 
Rectangle cloneRect = new Rectangle(startX, startY, int_Width, int_Height); 
PixelFormat format = bm.PixelFormat; 
Bitmap cloneBitmap = bm.Clone(cloneRect, format); 
if (int_Width > int_Standard_Width) 

//縮小圖片 
System.Drawing.Image cutImg = cloneBitmap.GetThumbnailImage(int_Standard_Width, int_Standard_Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero); 
cutImg.Save(out_ImgUrl, ici, ep); 
cutImg.Dispose(); 

else 

//保存圖片 
cloneBitmap.Save(out_ImgUrl, ici, ep); 

cloneBitmap.Dispose(); 
bm.Dispose(); 

public bool ThumbnailCallback() 

return false; 


主要頁面源碼:source

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级特黄aaa大片 | 国内精品99| 日本一区二区视频在线 | 日本艳鉧动漫1~6在线观看 | 扒开腚眼子视频大全 | 国产精品视频免费看 | 999久久久免费精品国产牛牛 | 四虎影视在线观看2413 | 成人毛片高清视频观看 | 精品国产欧美一区二区 | 和日本免费不卡在线v | x8x8国产在线观看2021 | 日本精品中文字幕在线播放 | 免费yjsp妖精com | 美女福利视频网站 | 亚洲精品国产成人中文 | 久久亚洲成a人片 | 女人与zzzooooxxx | 色综合图区 | 亚洲2017久无码 | 下雨天小说词枝 | 日本在线观看www | 欧洲一级黑寡妇 | 高中生喷水喷浆 | 天美传媒影视在线免费观看 | 成人国产在线视频在线观看 | 国产成人精品第一区二区 | 女教师巨大乳孔中文字幕免费 | 色依依视频视频在线观看 | 精品国产日韩亚洲一区在线 | 亚洲AV精品无码喷水直播间 | 美女视频在线观看视频 | 男人狂躁女人下面狂叫图片 | 午夜福利视频极品国产83 | 波多野结衣教师未删减版 | 男人疯狂擦进女人下面 | 久久久久久免费观看 | 日本十大顶级绝伦推理片 | 天天爽天天干天天操 | jizz 日本亚洲| 亚洲国产精品久久网午夜 |