Introduction:-
Here I have explained How to crop image with jquery and asp.net.
Description:-
In my previous article I have explained Load Different Pages dynamically using jquery and javascript functionwith displaying progress bar ,How to Show DifferentNotification In Asp.net using Jquery and Javascript ? ,How to calculate differencebetween two dates using JQuery? ,How to call a session variable inJQuery? ,How to ScrollPage from Top to Bottom and from Bottom to Top Using Jquery/Javascript .
In this article I will explain how you can crop your selected
image using jQuery and asp.net.
You have follow the below steps to get the result.It
will be better if you will copy and paste the code I have written below to see
the output.
·
First
create one css style sheet,here I am providing as jcrop.css
jcrop.css
.jcrop-holder
{
text-align: left;
}
.jcrop-vline, .jcrop-hline
{
font-size: 0;
position: absolute;
background: white
url('../images/Jcrop.gif') top left repeat;
}
.jcrop-vline { height:
100%; width: 1px !important; }
.jcrop-hline { width:
100%; height: 1px !important; }
.jcrop-handle {
font-size: 1px;
width: 7px !important;
height: 7px !important;
border: 1px #eee solid;
background-color: #333;
*width: 9px;
*height: 9px;
}
.jcrop-tracker {
*background-color: gray;
width: 100%; height: 100%;
}
.custom .jcrop-vline,
.custom .jcrop-hline
{
background: yellow;
}
.custom .jcrop-handle
{
border-color: black;
background-color: #C7BB00;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
}
.coor
{
width:30px;
}
·
Second
create one js file,here I am written function inside crop.js
crop.js
function Init() {
$(function() {
$('#MyoriginalImage').Jcrop({
onChange: showCoords,
onSelect: showCoords
});
});
// supporting code for IE to force
"overflow: auto;"
document.getElementById("imgContainer").Mystylefolder["position"] = "relative";
}
function showCoords(MyC) {
$('#Myx1').val(MyC.x);
$('#Myy1').val(MyC.y);
$('#Myx2').val(MyC.Myx2);
$('#Myy2').val(MyC.Myy2);
$('#w').val(MyC.w);
$('#h').val(MyC.h);
};
function ValidateSelectedPortion() {
if (document.getElementById("w").value == ""
|| document.getElementById("w").value
== "0"
|| document.getElementById("h").value
== "" || document.getElementById("h").value == "0")
{
alert("No area for crop was selected");
return false;
}
}
·
Third
create second js file,here
write function inside jcrop.js,you
can name it in your choice or simple copy and paste this code.
jcrop.js
(function($) {
$.Jcrop =
function(Myobj,Myopt )
{
var Myobj = Myobj, Myopt = Myopt ;
if (typeof(Myobj)
!== 'object') Myobj = $(Myobj)[0];
if (typeof(Myopt
) !== 'object') Myopt = { };
if (!('trackDocument'
in Myopt ))
{
Myopt .trackDocument = $.browser.msie ? false :
true;
if ($.browser.msie
&&$.browser.version.split('.')[0] == '8')
Myopt .trackDocument = true;
}
if (!('keySupport'
in Myopt ))
Myopt .keySupport = $.browser.msie ? false : true;
var defaults = {
//providing some Basic Settings
trackDocument:
false,
baseClass:
'jcrop',
addClass:
null,
//Providing some Styling Options
bgColor:
'black',
bgOpacity:
.6,
borderOpacity:
.4,
handleOpacity:
.5,
handlePad:
5,
handleSize:
9,
handleOffset: 5,
edgeMargin:
14,
aspectRatio: 0,
keySupport:
true,
cornerHandles:
true,
sideHandles: true,
drawBorders: true,
dragEdges:
true,
boxWidth:
0,
boxHeight:
0,
boundary:
8,
animationDelay:
20,
swingSpeed:
3,
allowSelect: true,
allowMove:
true,
allowResize: true,
minSelect:
[ 0, 0 ],
maxSize:
[ 0, 0 ],
minSize:
[ 0, 0 ],
// Here is the Callbacks and Event Handlers
onChange: function() { },
onSelect: function() { }
};
var Myoptions = defaults;
setOptionsFunction(Myopt );
// Initializing some jQuery objects
var $Myorigimg = $(Myobj);
var $Myimg = $Myorigimg.clone().removeAttr('id').css({ position: 'absolute'
});
$Myimg.width($Myorigimg.width());
$Myimg.height($Myorigimg.height());
$Myorigimg.after($Myimg).hide();
presize($Myimg,Myoptions.boxWidth,Myoptions.boxHeight);
var boundx = $Myimg.width(),
boundy = $Myimg.height(),
$div = $('<div />')
.width(boundx).height(boundy)
.addClass(cssClass('holder'))
.css({
position: 'relative',
backgroundColor: Myoptions.bgColor
}).insertAfter($Myorigimg).append($Myimg);
;
if (Myoptions.addClass) $div.addClass(Myoptions.addClass);
var $img2 = $('<Myimg
/>')
.attr('src',$Myimg.attr('src'))
.css('position','absolute')
.width(boundx).height(boundy) ;
var $Myimg_holder = $('<div
/>')
.width(pct(100)).height(pct(100))
.css({
zIndex: 310,
position: 'absolute',
overflow: 'hidden'
})
.append($img2)
;
var $hdl_holder = $('<div
/>')/*{{{*/
.width(pct(100)).height(pct(100))
.css('zIndex',320);
var $sel = $('<div
/>')
.css({
position: 'absolute',
zIndex: 300
})
.insertBefore($Myimg)
.append($Myimg_holder,$hdl_holder)
;
var bound = Myoptions.boundary;
var $Mytrk = newTrackerFunction().width(boundx+(bound*2)).height(boundy+(bound*2))
.css({ position: 'absolute', top: px(-bound),
left: px(-bound), zIndex: 290 })
.mousedown(newSelectionFunction);
// Setting more variables to store data
var Myxlimit, Myylimit, Myxmin, Myymin;
var Myxscale, Myyscale, enabled = true;
var MydocOffset = getPosFunction($Myimg),
//Here is some Internal states
btndown, lastcurs, dimmed, animating,
shift_down;
// Here is some internal modules
var MyCoords = function()
{
var Myx1 = 0, Myy1 = 0, Myx2 = 0, Myy2 = 0, ox,
oy;
function setPressed(Mypos)/*{{{*/
{
var Mypos = rebound(Mypos);
Myx2 = Myx1 = Mypos[0];
Myy2 = Myy1 = Mypos[1];
};
function setCurrentFunction(Mypos)
{
var Mypos = rebound(Mypos);
ox = Mypos[0] - Myx2;
oy = Mypos[1] - Myy2;
Myx2 = Mypos[0];
Myy2 = Mypos[1];
};
function getOffsetFunction()
{
return [ ox, oy ];
};
/*}}}*/
function moveOffsetFunction(offset)
{
var ox = offset[0], oy = offset[1];
if (0 > Myx1 + ox) ox -= ox + Myx1;
if (0 > Myy1 + oy) oy -= oy + Myy1;
if (boundy < Myy2 + oy) oy += boundy - (Myy2
+ oy);
if (boundx < Myx2 + ox) ox += boundx - (Myx2
+ ox);
Myx1 += ox;
Myx2 += ox;
Myy1 += oy;
Myy2 += oy;
};
function getCornerFunction(Myord)
{
var MyC = getFixedFunction();
switch(Myord)
{
case 'ne': return [ MyC.Myx2, MyC.y ];
case 'Mynw': return [ MyC.x, MyC.y ];
case 'se': return [ MyC.Myx2, MyC.Myy2 ];
case 'sw': return [ MyC.x, MyC.Myy2 ];
}
};
function getFixedFunction()
{
if (!Myoptions.aspectRatio) return getRectFunction();
// You can optimize this function here
var aspect = Myoptions.aspectRatio,
min_x = Myoptions.minSize[0]/Myxscale,
min_y = Myoptions.minSize[1]/Myyscale,
max_x = Myoptions.maxSize[0]/Myxscale,
max_y = Myoptions.maxSize[1]/Myyscale,
Myrw = Myx2 - Myx1,
Myrh = Myy2 - Myy1,
Myrwa = Math.abs(Myrw ),
Myrha = Math.abs(Myrh),
Myreal_ratio = Myrwa / Myrha ,
Myxx, Myyy
;
if (max_x == 0) { max_x = boundx * 10 }
if (max_y == 0) { max_y = boundy * 10 }
if (Myreal_ratio < aspect)
{
Myyy = Myy2;
w = Myrha * aspect;
Myxx = Myrw < 0 ? Myx1 - w : w + Myx1;
if (Myxx < 0)
{
Myxx = 0;
h = Math.abs((Myxx - Myx1) / aspect);
Myyy = Myrh < 0 ? Myy1 - h: h + Myy1;
}
else if (Myxx
> boundx)
{
Myxx = boundx;
h = Math.abs((Myxx - Myx1) / aspect);
Myyy = Myrh < 0 ? Myy1 - h : h + Myy1;
}
}
else
{
Myxx = Myx2;
h = Myrwa / aspect;
Myyy = Myrh < 0 ? Myy1 - h : Myy1 +
h;
if (Myyy < 0)
{
Myyy = 0;
w = Math.abs((Myyy - Myy1) * aspect);
Myxx = Myrw < 0 ? Myx1 - w : w + Myx1;
}
else if (Myyy >boundy)
{
Myyy = boundy;
w = Math.abs(Myyy - Myy1) * aspect;
Myxx = Myrw < 0 ? Myx1 - w : w + Myx1;
}
}
// Provide some magic effects
if(Myxx > Myx1) { //part
of right side
if(Myxx - Myx1< min_x) {
Myxx = Myx1 + min_x;
} else if
(Myxx - Myx1 > max_x) {
Myxx = Myx1 + max_x;
}
if(Myyy >Myy1) {
Myyy = Myy1 + (Myxx - Myx1)/aspect;
} else {
Myyy = Myy1 - (Myxx - Myx1)/aspect;
}
} else if (Myxx<
Myx1) { // part of left side
if(Myx1 - Myxx< min_x) {
Myxx = Myx1 - min_x
} else if
(Myx1 - Myxx > max_x) {
Myxx = Myx1 - max_x;
}
if(Myyy >Myy1) {
Myyy = Myy1 + (Myx1 - Myxx)/aspect;
} else {
Myyy = Myy1 - (Myx1 - Myxx)/aspect;
}
}
if(Myxx < 0) {
Myx1 -= Myxx;
Myxx = 0;
} else if
(Myxx > boundx) {
Myx1 -= Myxx - boundx;
Myxx = boundx;
}
if(Myyy < 0) {
Myy1 -= Myyy ;
Myyy = 0;
} else if
(Myyy > boundy) {
Myy1 -= Myyy - boundy;
Myyy = boundy;
}
return last = makeObjFunction(flipCoordsFunction(Myx1,Myy1,Myxx,Myyy
));
};
function rebound(p){
if (p[0] < 0) p[0] = 0;
if (p[1] < 0) p[1] = 0;
if (p[0] > boundx) p[0] = boundx;
if (p[1] > boundy) p[1] = boundy;
return [ p[0], p[1] ];
};
function flipCoordsFunction(Myx1,Myy1,Myx2,Myy2)
{
var Myxa = Myx1, Myxb = Myx2, Myya = Myy1, Myyb
= Myy2;
if (Myx2 < Myx1)
{
Myxa = Myx2;
Myxb = Myx1;
}
if (Myy2 < Myy1)
{
Myya = Myy2;
Myyb = Myy1;
}
return [ Math.round(Myxa), Math.round(Myya),
Math.round(Myxb), Math.round(Myyb) ];
};
function getRectFunction()
{
var xsize = Myx2 - Myx1;
var ysize = Myy2 - Myy1;
if (Myxlimit && (Math.abs(xsize) > Myxlimit))
Myx2 = (xsize > 0) ? (Myx1 + Myxlimit) : (Myx1 - Myxlimit);
if (Myylimit && (Math.abs(ysize) > Myylimit))
Myy2 = (ysize > 0) ? (Myy1 + Myylimit) : (Myy1 - Myylimit);
if (Myymin && (Math.abs(ysize) < Myymin))
Myy2 = (ysize > 0) ? (Myy1 + Myymin) : (Myy1 - Myymin);
if (Myxmin && (Math.abs(xsize) < Myxmin))
Myx2 = (xsize > 0) ? (Myx1 + Myxmin) : (Myx1 - Myxmin);
if (Myx1 < 0) { Myx2 -= Myx1; Myx1 -= Myx1;
}
if (Myy1 < 0) { Myy2 -= Myy1; Myy1 -= Myy1;
}
if (Myx2 < 0) { Myx1 -= Myx2; Myx2 -= Myx2;
}
if (Myy2 < 0) { Myy1 -= Myy2; Myy2 -= Myy2;
}
if (Myx2 > boundx) { var delta = Myx2 - boundx; Myx1 -= delta; Myx2 -= delta; }
if (Myy2 > boundy) { var delta = Myy2 - boundy; Myy1 -= delta; Myy2 -= delta; }
if (Myx1 > boundx) { var delta = Myx1 - boundy; Myy2 -= delta; Myy1 -= delta; }
if (Myy1 > boundy) { var delta = Myy1 - boundy; Myy2 -= delta; Myy1 -= delta; }
return makeObjFunction(flipCoordsFunction(Myx1,Myy1,Myx2,Myy2));
};
function makeObjFunction(a)
{
return { x: a[0], y: a[1], Myx2: a[2], Myy2:
a[3],
w: a[2] - a[0], h: a[3] - a[1] };
};
return {
flipCoordsFunction: flipCoordsFunction,
setPressed: setPressed,
setCurrentFunction: setCurrentFunction,
getOffsetFunction: getOffsetFunction,
moveOffsetFunction: moveOffsetFunction,
getCornerFunction: getCornerFunction,
getFixedFunction: getFixedFunction
};
}();
var Selection = function()
{
var start, end, dragmode, Myawake, Myhdep =
370;
var Myborders = { };
var handle = { };
var Myseehandles = false;
var Myhhs = Myoptions.handleOffset;
/* Inserting here some draggable elements */
// Inserting here some border divs for an outline
if (Myoptions.drawBorders) {
Myborders = {
top: insertBorderFunction('hline')
.css('top',$.browser.msie?px(-1):px(0)),
bottom: insertBorderFunction('hline'),
left: insertBorderFunction('vline'),
right: insertBorderFunction('vline')
};
}
// Inserting some handles for edges
if (Myoptions.dragEdges) {
handle.t = insertDragbarFunction('n');
handle.b = insertDragbarFunction('s');
handle.r = insertDragbarFunction('e');
handle.l = insertDragbarFunction('w');
}
// Inserting here side handles
Myoptions.sideHandles &&
createHandlesFunction(['n','s','e','w']);
// Inserting here corner handles
Myoptions.cornerHandles &&
createHandlesFunction(['sw','Mynw','ne','se']);
// writing private methods
function insertBorderFunction(type)/*{{{*/
{
var Myjq =
$('<div />')
.css({position: 'absolute', opacity: Myoptions.borderOpacity
})
.addClass(cssClass(type));
$Myimg_holder.append(Myjq);
return Myjq;
};
function dragDivFunction(Myord,zi)
{
var Myjq = $('<div
/>')
.mousedown(createDraggerFunction(Myord))
.css({
cursor: Myord+'-resizeFunction',
position: 'absolute',
zIndex: zi
})
;
$hdl_holder.append(Myjq);
return Myjq;
};
function insertHandleFunction(Myord)
{
return dragDivFunction(Myord,Myhdep++)
.css({ top: px(-Myhhs+1), left: px(-Myhhs+1), opacity: Myoptions.handleOpacity
})
.addClass(cssClass('handle'));
};
function insertDragbarFunction(Myord)
{
var s = Myoptions.handleSize,
o = Myhhs,
h = s, w = s,
t = o, l = o;
switch(Myord)
{
case 'n': case 's': w =
pct(100); break;
case 'e': case 'w': h =
pct(100); break;
}
return dragDivFunction(Myord,Myhdep++).width(w).height(h)
.css({ top: px(-t+1), left: px(-l+1)});
};
function createHandlesFunction(li)
{
for(i in li)
handle[li[i]] = insertHandleFunction(li[i]);
};
function moveHandlesFunction(MyC)
{
var midvert = Math.round((MyC.h / 2) - Myhhs),
midhoriz = Math.round((MyC.w / 2) - Myhhs),
north = west = -Myhhs+1,
east = MyC.w - Myhhs,
south = MyC.h - Myhhs,
x, y;
'e' in
handle&&
handle.e.css({ top: px(midvert), left: px(east) }) &&
handle.w.css({ top: px(midvert) }) &&
handle.s.css({ top: px(south), left: px(midhoriz) }) &&
handle.n.css({ left: px(midhoriz) });
'ne' in
handle&&
handle.ne.css({ left: px(east) }) &&
handle.se.css({ top: px(south), left: px(east) }) &&
handle.sw.css({ top: px(south) });
'b' in
handle&&
handle.b.css({ top: px(south) }) &&
handle.r.css({ left: px(east) });
};
function movetoFunction(x,y)
{
$img2.css({ top: px(-y), left: px(-x) });
$sel.css({ top: px(y), left: px(x) });
};
function resizeFunction(w,h)
{
$sel.width(w).height(h);
};
function refreshFunction()
{
var MyC = MyCoords .getFixedFunction();
MyCoords .setPressed([MyC.x,MyC.y]);
MyCoords .setCurrentFunction([MyC.Myx2,MyC.Myy2]);
updateVisibleFunction();
};
//Writing here internal methods
function updateVisibleFunction()
{ if (Myawake) return
update(); };
function update()
{
var MyC = MyCoords .getFixedFunction();
resizeFunction(MyC.w,MyC.h);
movetoFunction(MyC.x,MyC.y);
Myoptions.drawBorders &&
Myborders['right'].css({ left: px(MyC.w-1) })
&&
Myborders['bottom'].css({ top: px(MyC.h-1)
});
Myseehandles && moveHandlesFunction(MyC);
Myawake || show();
Myoptions.onChange(unscaleFunction(MyC));
};
function show()
{
$sel.show();
$Myimg.css('opacity',Myoptions.bgOpacity);
Myawake = true;
};
function releaseFunction()
{
disableHandlesFunction();
$sel.hide();
$Myimg.css('opacity',1);
Myawake = false;
};
function showHandlesFunction()
{
if (Myseehandles )
{
moveHandlesFunction(MyCoords .getFixedFunction());
$hdl_holder.show();
}
};
function enableHandlesFunction()
{
Myseehandles = true;
if (Myoptions.allowResize)
{
moveHandlesFunction(MyCoords .getFixedFunction());
$hdl_holder.show();
return true;
}
};
function disableHandlesFunction()
{
Myseehandles = false;
$hdl_holder.hide();
};
function animModeFunction(v)
{
(animating = v) ? disableHandlesFunction(): enableHandlesFunction();
};
function doneFunction()
{
animModeFunction(false);
refreshFunction();
};
var $track = newTrackerFunction().mousedown(createDraggerFunction('move'))
.css({ cursor: 'move', position: 'absolute', zIndex: 360 })
$Myimg_holder.append($track);
disableHandlesFunction();
return {
updateVisibleFunction: updateVisibleFunction,
update: update,
releaseFunction: releaseFunction,
refreshFunction: refreshFunction,
setCursor: function (cursor) { $track.css('cursor',cursor); },
enableHandlesFunction: enableHandlesFunction,
enableOnly: function() { Myseehandles = true; },
showHandlesFunction: showHandlesFunction,
disableHandlesFunction: disableHandlesFunction,
animModeFunction: animModeFunction,
doneFunction: doneFunction
};
}();
var MyTracker = function()
{
var
onMove = function() { },
onDone = function()
{ },
trackDoc = Myoptions.trackDocument;
if (!trackDoc)
{
$Mytrk
.mousemove(trackMoveFunction)
.mouseup(trackUpFunction)
.mouseout(trackUpFunction)
;
}
function toFrontFunction()
{
$Mytrk.css({zIndex:450});
if (trackDoc)
{
$(document)
.mousemove(trackMoveFunction)
.mouseup(trackUpFunction)
;
}
}
function toBackFunction()
{
$Mytrk.css({zIndex:290});
if (trackDoc)
{
$(document)
.unbind('mousemove',trackMoveFunction)
.unbind('mouseup',trackUpFunction)
;
}
}
function trackMoveFunction(e)
{
onMove(mouseAbsFunction(e));
};
function trackUpFunction(e)
{
e.preventDefault();
e.stopPropagation();
if (btndown)
{
btndown = false;
onDone(mouseAbsFunction(e));
Myoptions.onSelect(unscaleFunction(MyCoords .getFixedFunction()));
toBackFunction();
onMove = function() { };
onDone = function() { };
}
return false;
};
function activateHandlersFunction(move,doneFunction)
{
btndown = true;
onMove = move;
onDone = doneFunction;
toFrontFunction();
return false;
};
function setCursor(t) { $Mytrk.css('cursor',t); };
$Myimg.before($Mytrk);
return {
activateHandlersFunction: activateHandlersFunction,
setCursor: setCursor
};
}();
var KeyManager = function()
{
var $keymgr = $('<input
type="radio" />')
.css({ position: 'absolute', left: '-30px' })
.keypress(parseKeyFunction)
.blur(onBlur),
$keywrap = $('<div />')
.css({
position: 'absolute',
overflow: 'hidden'
})
.append($keymgr)
;
function watchKeys()
{
if (Myoptions.keySupport)
{
$keymgr.show();
$keymgr.focus();
}
};
function onBlur(e)
{
$keymgr.hide();
};
function doNudgeFunction(e,x,y)
{
if (Myoptions.allowMove) {
MyCoords .moveOffsetFunction([x,y]);
Selection.updateVisibleFunction();
};
e.preventDefault();
e.stopPropagation();
};
function parseKeyFunction(e)
{
if (e.ctrlKey) return
true;
shift_down = e.shiftKey ? true : false;
var nudge = shift_down ? 10 : 1;
switch(e.keyCode)
{
case 37: doNudgeFunction(e,-nudge,0); break;
case 39: doNudgeFunction(e,nudge,0); break;
case 38: doNudgeFunction(e,0,-nudge); break;
case 40: doNudgeFunction(e,0,nudge); break;
case 27: Selection.releaseFunction(); break;
case 9: return true;
}
return nothing(e);
};
if (Myoptions.keySupport)
$keywrap.insertBefore($Myimg);
return {
watchKeys: watchKeys
};
}();
//Writing some internal methods
function px(n) { return
'' + parseInt(n) + 'px';
};
function pct(n) { return
'' + parseInt(n) + '%';
};
function cssClass(cl) { return Myoptions.baseClass + '-'
+ cl; };
function getPosFunction(Myobj)
{
// Here some updated datas
var Mypos = $(Myobj).offset();
return [ Mypos.left, Mypos.top ];
};
function mouseAbsFunction(e)
{
return [ (e.pageX - MydocOffset [0]), (e.pageY
- MydocOffset [1]) ];
};
function myCursor(type)
{
if (type != lastcurs)
{
MyTracker.setCursor(type);
lastcurs = type;
}
};
function startDragModeFunction(mode,Mypos)
{
MydocOffset = getPosFunction($Myimg);
MyTracker.setCursor(mode=='move'?mode:mode+'-resizeFunction');
if (mode == 'move')
return MyTracker.activateHandlersFunction(createMoverFunction(Mypos),
doneSelectFunction);
var Myfc = MyCoords .getFixedFunction();
var Myopp = oppLockCornerFunction(mode);
var Myopc = MyCoords .getCornerFunction(oppLockCornerFunction(Myopp));
MyCoords .setPressed(MyCoords .getCornerFunction(Myopp));
MyCoords .setCurrentFunction(Myopc);
MyTracker.activateHandlersFunction(dragmodeHandlerFunction(mode,Myfc),doneSelectFunction);
};
function dragmodeHandlerFunction(mode,f)
{
return function(Mypos)
{
if (!Myoptions.aspectRatio) switch(mode)
{
case 'e': Mypos[1]
= f.Myy2; break;
case 'w': Mypos[1]
= f.Myy2; break;
case 'n': Mypos[0]
= f.Myx2; break;
case 's': Mypos[0]
= f.Myx2; break;
}
else switch(mode)
{
case 'e': Mypos[1]
= f.y+1; break;
case 'w': Mypos[1]
= f.y+1; break;
case 'n': Mypos[0]
= f.x+1; break;
case 's': Mypos[0]
= f.x+1; break;
}
MyCoords .setCurrentFunction(Mypos);
Selection.update();
};
};
function createMoverFunction(Mypos)
{
var lloc = Mypos;
KeyManager.watchKeys();
return function(Mypos)
{
MyCoords .moveOffsetFunction([Mypos[0] - lloc[0], Mypos[1] - lloc[1]]);
lloc = Mypos;
Selection.update();
};
};
function oppLockCornerFunction(Myord)
{
switch(Myord)
{
case 'n': return 'sw';
case 's': return 'Mynw';
case 'e': return 'Mynw';
case 'w': return 'ne';
case 'ne': return 'sw';
case 'Mynw': return 'se';
case 'se': return 'Mynw';
case 'sw': return 'ne';
};
};
function createDraggerFunction(Myord)
{
return function(e)
{
if (Myoptions.disabled) return false;
if ((Myord == 'move')&&
!Myoptions.allowMove) return false;
btndown = true;
startDragModeFunction(Myord,mouseAbsFunction(e));
e.stopPropagation();
e.preventDefault();
return false;
};
};
function presize($Myobj,w,h)
{
var Mynw = $Myobj.width(), Mynh = $Myobj.height();
if ((Mynw > w) && w > 0)
{
Mynw = w;
Mynh = (w/$Myobj.width()) * $Myobj.height();
}
if ((Mynh > h) && h > 0)
{
Mynh = h;
Mynw = (h/$Myobj.height()) * $Myobj.width();
}
Myxscale = $Myobj.width() / Mynw;
Myyscale = $Myobj.height() / Mynh;
$Myobj.width(Mynw).height(Mynh);
};
function unscaleFunction(MyC)
{
return {
x: parseInt(MyC.x * Myxscale), y: parseInt(MyC.y * Myyscale),
Myx2: parseInt(MyC.Myx2 * Myxscale), Myy2: parseInt(MyC.Myy2 * Myyscale),
w: parseInt(MyC.w * Myxscale), h: parseInt(MyC.h * Myyscale)
};
};
function doneSelectFunction(Mypos)
{
var MyC = MyCoords .getFixedFunction();
if (MyC.w > Myoptions.minSelect[0]
&& MyC.h >Myoptions.minSelect[1])
{
Selection.enableHandlesFunction();
Selection.doneFunction();
}
else
{
Selection.releaseFunction();
}
MyTracker.setCursor( Myoptions.allowSelect?'crosshair':'default' );
};
function newSelectionFunction(e)
{
if (Myoptions.disabled) return false;
if (!Myoptions.allowSelect) return false;
btndown = true;
MydocOffset = getPosFunction($Myimg);
Selection.disableHandlesFunction();
myCursor('crosshair');
var Mypos = mouseAbsFunction(e);
MyCoords .setPressed(Mypos);
MyTracker.activateHandlersFunction(selectDragFunction,doneSelectFunction);
KeyManager.watchKeys();
Selection.update();
e.stopPropagation();
e.preventDefault();
return false;
};
function selectDragFunction(Mypos)
{
MyCoords .setCurrentFunction(Mypos);
Selection.update();
};
function newTrackerFunction()
{
var Mytrk = $('<div></div>').addClass(cssClass('tracker'));
$.browser.msie && Mytrk.css({ opacity: 0, backgroundColor: 'white' });
return Mytrk;
};
//providing API methods
function animateToFunction(a)
{
var Myx1 = a[0] / Myxscale,
Myy1 = a[1] / Myyscale,
Myx2 = a[2] / Myxscale,
Myy2 = a[3] / Myyscale;
if (animating) return;
var Myanimto = MyCoords .flipCoordsFunction(Myx1,Myy1,Myx2,Myy2);
var MyC = MyCoords .getFixedFunction();
var Myanimat = initcr = [ MyC.x, MyC.y, MyC.Myx2,
MyC.Myy2 ];
var Myinterv = Myoptions.animationDelay;
var x = Myanimat[0];
var y = Myanimat[1];
var Myx2 = Myanimat[2];
var Myy2 = Myanimat[3];
var ix1 = Myanimto[0] - initcr[0];
var iy1 = Myanimto[1] - initcr[1];
var ix2 = Myanimto[2] - initcr[2];
var iy2 = Myanimto[3] - initcr[3];
var Mypcent = 0;
var Myvelocity = Myoptions.swingSpeed;
Selection.animModeFunction(true);
var Myanimator = function()
{
return function()
{
Mypcent += (100 - Mypcent) / Myvelocity;
Myanimat[0] = x + ((Mypcent / 100) * ix1);
Myanimat[1] = y + ((Mypcent / 100) * iy1);
Myanimat[2] = Myx2 + ((Mypcent / 100) * ix2);
Myanimat[3] = Myy2 + ((Mypcent / 100) * iy2);
if (Mypcent < 100) animateStartFunction();
else Selection.doneFunction();
if (Mypcent >= 99.8) Mypcent = 100;
setSelectRawFunction(Myanimat);
};
}();
function animateStartFunction()
{ window.setTimeout(Myanimator,Myinterv); };
animateStartFunction();
};
function setSelectionFunction(rect)
{
setSelectRawFunction([rect[0]/Myxscale,rect[1]/Myyscale,rect[2]/Myxscale,rect[3]/Myyscale]);
};
function setSelectRawFunction(l)
{
MyCoords .setPressed([l[0],l[1]]);
MyCoords .setCurrentFunction([l[2],l[3]]);
Selection.update();
};
function setOptionsFunction(Myopt )
{
if (typeof(Myopt
) != 'object') Myopt = { };
Myoptions = $.extend(Myoptions,Myopt );
if (typeof(Myoptions.onChange)!=='function')
Myoptions.onChange = function() { };
if (typeof(Myoptions.onSelect)!=='function')
Myoptions.onSelect = function() { };
};
function tellSelectFunction()
{
return unscaleFunction(MyCoords .getFixedFunction());
};
function tellScaledFunction()
{
return MyCoords .getFixedFunction();
};
function setOptionsNewFunction(Myopt )
{
setOptionsFunction(Myopt );
MyinterfaceUpdate();
};
function disableCropFunction()
{
Myoptions.disabled = true;
Selection.disableHandlesFunction();
Selection.setCursor('default');
MyTracker.setCursor('default');
};
function enableCropFunction()
{
Myoptions.disabled = false;
MyinterfaceUpdate();
};
function cancelCropFunction()
{
Selection.doneFunction();
MyTracker.activateHandlersFunction(null,null);
};
function destroyFunction()
{
$div.remove();
$Myorigimg.show();
};
function MyinterfaceUpdate(alt)
//Here This method will tweaks the interface
based on Myoptions object only.
//It Called when Myoptions are get changed and at
the end of initialization.
{
Myoptions.allowResize ?
alt?Selection.enableOnly():Selection.enableHandlesFunction():
Selection.disableHandlesFunction();
MyTracker.setCursor( Myoptions.allowSelect? 'crosshair':
'default' );
Selection.setCursor( Myoptions.allowMove? 'move':
'default' );
$div.css('backgroundColor',Myoptions.bgColor);
if ('setSelectionFunction'
in Myoptions) {
setSelectionFunction(Myopt .setSelectionFunction);
Selection.doneFunction();
delete(Myoptions.setSelectionFunction);
}
if ('trueSize'
in Myoptions) {
Myxscale = Myoptions.trueSize[0] / boundx;
Myyscale = Myoptions.trueSize[1] / boundy;
}
Myxlimit = Myoptions.maxSize[0] || 0;
Myylimit = Myoptions.maxSize[1] || 0;
Myxmin = Myoptions.minSize[0] || 0;
Myymin = Myoptions.minSize[1] || 0;
if ('outerImage'
in Myoptions)
{
$Myimg.attr('src',Myoptions.outerImage);
delete(Myoptions.outerImage);
}
Selection.refreshFunction();
};
$hdl_holder.hide();
MyinterfaceUpdate(true);
var api = {
animateToFunction: animateToFunction,
setSelectionFunction: setSelectionFunction,
setOptionsFunction: setOptionsNewFunction,
tellSelectFunction: tellSelectFunction,
tellScaledFunction: tellScaledFunction,
disable: disableCropFunction,
enable: enableCropFunction,
cancel: cancelCropFunction,
focus: KeyManager.watchKeys,
getBounds: function() { return [ boundx * Myxscale, boundy * Myyscale ]; },
getWidgetSize: function() { return [ boundx, boundy ]; },
releaseFunction: Selection.releaseFunction,
destroyFunction: destroyFunction
};
$Myorigimg.data('Jcrop',api);
return api;
};
$.fn.Jcrop
= function(Myoptions)
{
function attachWhenDoneFunction(from)
{
var Myloadsrc = Myoptions.useImg || from.src;
var Myimg = new
Image();
Myimg.onload = function() { $.Jcrop(from,Myoptions);
};
Myimg.src = Myloadsrc;
};
if (typeof(Myoptions)
!== 'object') Myoptions = { };
// Iterating over each object as well as attaching
Jcrop
this.each(function()
{
// checking for If we already have attach to this
object
if ($(this).data('Jcrop'))
{
// we can request the api this way
if (Myoptions == 'api')
return $(this).data('Jcrop');
// else just reset
else $(this).data('Jcrop').setOptionsFunction(Myoptions);
}
// if it is not attached then preload and attach
it
else attachWhenDoneFunction(this);
});
// retuning this for chainable plugin
return this;
};
})(jQuery);
MyCropPage.aspx:
<%@ Page
Language="C#"
AutoEventWireup="true"
CodeFile="MyCropPage.aspx.cs"
Inherits="MyCropPage"
%>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head
runat="server">
<title>Cropping image with jquery and ASP.NET By Shibashish
Mohanty</title>
<link rel="stylesheet"
href="Mystylefolder/jcrop.css"
type="text/css"
/>
<script src="Myjsfolder/jquery.min.Myjsfolder"
type="text/javascript"></script>
<script src="Myjsfolder/jquery.Jcrop.Myjsfolder"
type="text/javascript"></script>
<script src="Myjsfolder/crop.Myjsfolder"
type="text/javascript"></script>
</head>
<body
onload="Init();">
<form id="form1" runat="server">
<table>
<tr>
<td>My Original image
<div Mystylefolder="width: 300px; height: 300px; overflow: auto; border: solid 1px black;
padding:
10px; margin-bottom:
5px;" id="imgContainer">
<Myimg src="images/Shibashish.jpg"
alt="My auto"
title="This is my auto image" id="MyoriginalImage"
/>
</div>
<div>
X1
<input type="text" size="4" id="Myx1" name="Myx1" class="coor"
readonly="readonly"
/>
Y1
<input type="text" size="4" id="Myy1" name="Myy1" class="coor"
readonly="readonly"
/>
X2
<input type="text" size="4" id="Myx2" name="Myx2" class="coor"
readonly="readonly"
/>
Y2
<input type="text" size="4" id="Myy2" name="Myy2" class="coor"
readonly="readonly"
/>
WIDTH
<input type="text" size="4" id="w" name="w" class="coor"
readonly="readonly"
/>
HEIGHT
<input type="text" size="4" id="h" name="h" class="coor"
readonly="readonly"
/>
</div>
<div>
<asp:Button runat="server"
ID="CroppedBtn"
OnClick="CroppedBtn_Click"
Text="Crop"
OnClientClick="return
ValidateSelectedPortion();" />
</div>
</td>
<td Mystylefolder="vertical-align:top;">
This
is your Cropped image:
<div Mystylefolder="width: 300px; height: 300px; overflow: auto; border: solid 1px black;
padding: 10px; margin-bottom: 5px;">
<asp:Literal runat="server"
ID="LabelCrpImage"></asp:Literal>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
MyCropPage.aspx.cs
using System;
using System.Web;
using System.Web.UI;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public partial
class MyCropPage
: System.Web.UI.Page
{
protected void CroppedBtn_Click(object sender, EventArgs
e)
{
int X1 = Convert.ToInt32(Request.Form["Myx1"]);
int Y1 = Convert.ToInt32(Request["Myy1"]);
//Taking input and converting to integer value
int X2 = Convert.ToInt32(Request.Form["Myx2"]);
int Y2 = Convert.ToInt32(Request.Form["Myy2"]);
int X = System.Math.Min(X1,
X2);
int Y = System.Math.Min(Y1,
Y2);
int w = Convert.ToInt32(Request.Form["w"]);
int h = Convert.ToInt32(Request.Form["h"]);
// It may be any image types like(jpg,jpeg,png,gif)
from the local server
string MyoriginalFile = Server.MapPath("~/images/miautito.jpg");
using (Image
Myimg = Image.FromFile(MyoriginalFile))
{
using (System.Drawing.Bitmap
_Mybitmap = new System.Drawing.Bitmap(w, h))
{
_Mybitmap.SetResolution(Myimg.HorizontalResolution, Myimg.VerticalResolution);
using (Graphics
_Mygraphic = Graphics.FromImage(_Mybitmap))
{
_Mygraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
_Mygraphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
_Mygraphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
_Mygraphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
_Mygraphic.DrawImage(Myimg, 0, 0, w, h);
_Mygraphic.DrawImage(Myimg, new Rectangle(0, 0, w, h), X, Y, w, h, GraphicsUnit.Pixel);
string Myextension = Path.GetExtension(MyoriginalFile);
string fileCropped = Guid.NewGuid().ToString();
string MyFolderPath = Server.MapPath("~/ImageCropped/");
// If your image is a gif file, then it will change
it into png
if (Myextension.EndsWith("gif", StringComparison.OrdinalIgnoreCase))
{
Myextension = ".png";
}
string myFullPathName = string.Concat(MyFolderPath, fileCropped, Myextension);
using (EncoderParameters
encoderParameters = new EncoderParameters(1))
{
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality,
100L);
_Mybitmap.Save(myFullPathName, MethodGetImageCode(Myextension),
encoderParameters);
}
LabelCrpImage.Text = string.Format("<Myimg src='ImageCropped/{0}' alt='Cropped
image'>", fileCropped + Myextension);
}
}
}
}
public static ImageCodecInfo MethodGetImageCode(string Myextension)
{
Myextension = Myextension.ToUpperInvariant();
ImageCodecInfo[] MyCodecs = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo
MyCodec in MyCodecs)
{
if (MyCodec.FilenameExtension.Contains(Myextension))
{
return MyCodec;
}
}
return MyCodecs[1];
}
}
hii sir ,can u tell me how to make master page in ASP.net with C# and crystal Report.
ReplyDeleteplz help me...........sir............):