Avatar billede lund_dk Praktikant
29. august 2006 - 15:50 Der er 22 kommentarer og
1 løsning

Image Crop

Jeg har fundet dette script her på eksperten,som er lige hvad jeg skal bruge.

DOG har jeg en rettelse..

Den firkant man laver "crop" med vil jeg gerne have er kvadratisk.
Det vil sige, højde og bredde skal være den samme.

Nogen som kan hjælpe mig med at rette det til?

<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {
      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
      placeCropElm();
      cropActive = true;
      writePosition(elmId);
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
          endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
          placeCropElm();
          writePosition(elmId);
      }
  }
 
  function placeCropElm() {
      cropElm = document.getElementById(cropElmId).style;
      cropElm.left = Math.min(startPos.x,endPos.x)+"px";
      cropElm.top = Math.min(startPos.y,endPos.y)+"px";
      cropElm.width = Math.max(endPos.x-startPos.x,startPos.x-endPos.x)+"px";
      cropElm.height = Math.max(endPos.y-startPos.y,startPos.y-endPos.y)+"px";
  }

  function endCrop(elmId) {
      cropActive = false;
      writePosition(elmId);
  }
 
  function writePosition(ID) {
      frm = document.form1;
      elmPos = getPos(document.getElementById(ID));
      frm.x1.value = Math.min(startPos.x,endPos.x)-elmPos.x;
      frm.y1.value = Math.min(startPos.y,endPos.y)-elmPos.x;
      frm.x2.value = Math.max(startPos.x,endPos.x)-elmPos.y;
      frm.y2.value = Math.max(startPos.y,endPos.y)-elmPos.y;
  }

</script>
</head>
<body>
<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);;position:absolute;left:0px;top:0px" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,'billede');}"  onmousemove="moveCrop(event,'billede');"></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}" onmousemove="moveCrop(event,this.id);">

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">
</form>
</body>
</html>
Avatar billede mclemens Nybegynder
29. august 2006 - 17:26 #1
Jeg kan se at jeg har lavet en fejl i den ... her er lige en rettet udgave...



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta

http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>




<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;
  var cropfix=false;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {
      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
      placeCropElm();
      cropActive = true;
      writePosition(elmId);
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
          endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
          placeCropElm();
          writePosition(elmId);
      }
  }

  function placeCropElm() {
      cropElm = document.getElementById(cropElmId).style;
      cropElm.left = Math.min(startPos.x,endPos.x)+"px";
      cropElm.top = Math.min(startPos.y,endPos.y)+"px";
      cropElm.width = Math.max(endPos.x-startPos.x,startPos.x-endPos.x)+"px";
      cropElm.height = Math.max(endPos.y-startPos.y,startPos.y-endPos.y)+"px";
  }

  function endCrop(elmId) {
      cropActive = false;
      writePosition(elmId);
  }

  function writePosition(ID) {
      frm = document.form1;
      elmPos = getPos(document.getElementById(ID));
      frm.x1.value = Math.min(startPos.x,endPos.x)-elmPos.x;
      frm.y1.value = Math.min(startPos.y,endPos.y)-elmPos.x;
      frm.x2.value = Math.max(startPos.x,endPos.x)-elmPos.y;
      frm.y2.value = Math.max(startPos.y,endPos.y)-elmPos.y;
  }

</script>
</head>
<body>
<div id="cropDiv" style="border:1px solid

#000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);overflow:hidden;position:absolute;left:0px;top:0px"

onmousemove="moveCrop(event,'billede');" onclick="if (cropActive) {endCrop('billede');cropfix=true;} else

{startCrop(event,'billede');}" ></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if(!cropfix){ if(cropActive)

{endCrop(this.id);} else {startCrop(event,this.id);}}else cropfix=false;" onmousemove="moveCrop(event,this.id);">

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">
</form>
</body>
</html>
Avatar billede mclemens Nybegynder
29. august 2006 - 17:27 #2
ombrudt :/

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>


<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;
  var cropfix=false;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {
      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
      placeCropElm();
      cropActive = true;
      writePosition(elmId);
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
          endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
          placeCropElm();
          writePosition(elmId);
      }
  }

  function placeCropElm() {
      cropElm = document.getElementById(cropElmId).style;
      cropElm.left = Math.min(startPos.x,endPos.x)+"px";
      cropElm.top = Math.min(startPos.y,endPos.y)+"px";
      cropElm.width = Math.max(endPos.x-startPos.x,startPos.x-endPos.x)+"px";
      cropElm.height = Math.max(endPos.y-startPos.y,startPos.y-endPos.y)+"px";
  }

  function endCrop(elmId) {
      cropActive = false;
      writePosition(elmId);
  }

  function writePosition(ID) {
      frm = document.form1;
      elmPos = getPos(document.getElementById(ID));
      frm.x1.value = Math.min(startPos.x,endPos.x)-elmPos.x;
      frm.y1.value = Math.min(startPos.y,endPos.y)-elmPos.x;
      frm.x2.value = Math.max(startPos.x,endPos.x)-elmPos.y;
      frm.y2.value = Math.max(startPos.y,endPos.y)-elmPos.y;
  }

</script>
</head>
<body>
<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);overflow:hidden;position:absolute;left:0px;top:0px" onmousemove="moveCrop(event,'billede');" onclick="if (cropActive) {endCrop('billede');cropfix=true;} else {startCrop(event,'billede');}" ></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if(!cropfix){ if(cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}}else cropfix=false;" onmousemove="moveCrop(event,this.id);">

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">
</form>
</body>
</html>
Avatar billede mclemens Nybegynder
29. august 2006 - 17:32 #3
Hmmm, rettelsen bestod mere i:

<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);overflow:hidden;position:absolute;left:0px;top:0px" onmousemove="moveCrop(event,'billede');" onclick="if (cropActive) {endCrop('billede');} else {startCrop(event,'billede');}" ></div>

... så det med cropfix var ikke nødvendigt ...
(this.id rettet til 'billede')
Avatar billede mclemens Nybegynder
29. august 2006 - 17:39 #4
(og overflow:hidden; også tilføjet)
Avatar billede mclemens Nybegynder
29. august 2006 - 18:44 #5
M.h.t. det selve problem kan jeg ikke lige gennemskue
løsningen ... har du et link til tråden hvor du fandt den ?
Avatar billede mclemens Nybegynder
29. august 2006 - 19:48 #6
writepos skal lige pilles lidt ved , men den er halvvejs ...




<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>




<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {
      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
      placeCropElm();
      cropActive = true;
      writePosition(elmId);
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
          endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
          placeCropElm();
          writePosition(elmId);
      }
  }

  function placeCropElm() {
      cropElm = document.getElementById(cropElmId).style;


    tmpx=Math.max(endPos.x-startPos.x,startPos.x-endPos.x);
    tmpy=Math.max(endPos.y-startPos.y,startPos.y-endPos.y);


    if(endPos.y>startPos.y){
      cropElm.top =startPos.y+"px";
      cropElm.height=Math.max(tmpy,tmpx)+"px";
    }

    if(endPos.x>startPos.x){
      cropElm.left = startPos.x+"px";
      cropElm.width = Math.max(tmpy,tmpx)+"px";
    }

    if(endPos.x<startPos.x){
      endPos.x = Math.max(tmpy,tmpx);
      cropElm.left = startPos.x-endPos.x + "px";
      cropElm.width = Math.max(tmpy,tmpx)+"px";
    }

    if(endPos.y<startPos.y){
      endPos.y = Math.max(tmpy,tmpx);
      cropElm.top = startPos.y-endPos.y+"px";
      cropElm.height = Math.max(tmpy,tmpx)+"px";
    }

  }



  function endCrop(elmId) {
      cropActive = false;
      writePosition(elmId);
  }

  function writePosition(ID) {
      frm = document.form1;
      elmPos = getPos(document.getElementById(ID));
      frm.x1.value = Math.min(startPos.x,endPos.x)-elmPos.x;
      frm.y1.value = Math.min(startPos.y,endPos.y)-elmPos.x;
      frm.x2.value = Math.max(startPos.x,endPos.x)-elmPos.y;
      frm.y2.value = Math.max(startPos.y,endPos.y)-elmPos.y;
  }

</script>
</head>
<body>
<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);overflow:hidden;position:absolute;left:0px;top:0px" onmousemove="moveCrop(event,'billede');" onclick="if (cropActive) {endCrop('billede');} else {startCrop(event,'billede');}" ></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}" onmousemove="moveCrop(event,this.id);">

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">
</form>
</body>
</html>
Avatar billede mclemens Nybegynder
29. august 2006 - 20:11 #7
Sådan...




<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>




<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {
      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
      placeCropElm();
      cropActive = true;
      writePosition(elmId);
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
          endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
          placeCropElm();
          writePosition(elmId);
      }
  }

  function placeCropElm() {
      cropElm = document.getElementById(cropElmId).style;

      cropElm.left = Math.min(startPos.x,endPos.x)+"px";
      cropElm.top = Math.min(startPos.y,endPos.y)+"px";


    tmpx=Math.max(endPos.x-startPos.x,startPos.x-endPos.x);
    tmpy=Math.max(endPos.y-startPos.y,startPos.y-endPos.y);


    if(endPos.y>startPos.y){
      cropElm.top =startPos.y+"px";
      cropElm.height=Math.max(tmpy,tmpx)+"px";
    }

    if(endPos.x>startPos.x){
      cropElm.left = startPos.x+"px";
      cropElm.width = Math.max(tmpy,tmpx)+"px";
    }

    if(endPos.x<startPos.x){
      cropElm.left = startPos.x-Math.max(tmpy,tmpx)+ "px";
      cropElm.width = Math.max(tmpy,tmpx)+"px";
    }

    if(endPos.y<startPos.y){
      cropElm.top = startPos.y-Math.max(tmpy,tmpx)+"px";
      cropElm.height = Math.max(tmpy,tmpx)+"px";
    }

  }



  function endCrop(elmId) {
      cropActive = false;
      writePosition(elmId);
  }

  function writePosition(ID) {
      frm = document.form1;
      elmPos = getPos(document.getElementById(ID));

    tmpx=Math.max(endPos.x-startPos.x,startPos.x-endPos.x);
    tmpy=Math.max(endPos.y-startPos.y,startPos.y-endPos.y);


    if(endPos.y>startPos.y){
      frm.y1.value=startPos.y;
      frm.y2.value=Math.max(tmpy,tmpx);
    }

    if(endPos.x>startPos.x){
      frm.x1.value = startPos.x;
      frm.x2.value=Math.max(tmpy,tmpx);
    }

    if(endPos.x<startPos.x){
      frm.x1.value = startPos.x-Math.max(tmpy,tmpx);
      frm.x2.value = Math.max(tmpy,tmpx);
    }

    if(endPos.y<startPos.y){
      frm.y1.value = startPos.y-Math.max(tmpy,tmpx);
      frm.y2.value = Math.max(tmpy,tmpx);
    }

  }

</script>
</head>
<body>
<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);overflow:hidden;position:absolute;left:0px;top:0px" onmousemove="moveCrop(event,'billede');" onclick="if (cropActive) {endCrop('billede');} else {startCrop(event,'billede');}" ></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}" onmousemove="moveCrop(event,this.id);">

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">
</form>
</body>
</html>
Avatar billede mclemens Nybegynder
29. august 2006 - 20:17 #8
og hvis man flettede writepos og placecrop ... kunne det se sådan her ud:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>




<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {
      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
      placeCropElm();
      cropActive = true;
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
          endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
          placeCropElm();
      }
  }

  function placeCropElm() {
      frm = document.form1;
      elmPos = getPos(document.getElementById(cropElmId));

      cropElm = document.getElementById(cropElmId).style;

      cropElm.left = Math.min(startPos.x,endPos.x)+"px";
      cropElm.top = Math.min(startPos.y,endPos.y)+"px";


    tmpx=Math.max(endPos.x-startPos.x,startPos.x-endPos.x);
    tmpy=Math.max(endPos.y-startPos.y,startPos.y-endPos.y);


    if(endPos.y>startPos.y){

      frm.y1.value=startPos.y;
      cropElm.top=frm.y1.value+"px";

      frm.y2.value=Math.max(tmpy,tmpx);
      cropElm.height=frm.y2.value+"px";
    }


    if(endPos.x>startPos.x){
      frm.x1.value = startPos.x;
      cropElm.left = frm.x1.value+"px";

      frm.x2.value=Math.max(tmpy,tmpx);
      cropElm.width = frm.x2.value+"px";
    }


    if(endPos.x<startPos.x){
      frm.x1.value = startPos.x-Math.max(tmpy,tmpx);
      cropElm.left = frm.x1.value+ "px";

      frm.x2.value = Math.max(tmpy,tmpx);
      cropElm.width = frm.x2.value+"px";
    }


    if(endPos.y<startPos.y){
      frm.y1.value = startPos.y-Math.max(tmpy,tmpx);
      cropElm.top = frm.y1.value+"px";

      frm.y2.value = Math.max(tmpy,tmpx);
      cropElm.height = frm.y2.value+"px";
    }

  }



  function endCrop(elmId) {
      cropActive = false;
  }


</script>
</head>
<body>
<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);overflow:hidden;position:absolute;left:0px;top:0px" onmousemove="moveCrop(event,'billede');" onclick="if (cropActive) {endCrop('billede');} else {startCrop(event,'billede');}" ></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}" onmousemove="moveCrop(event,this.id);">

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">
</form>
</body>
</html>
Avatar billede mclemens Nybegynder
29. august 2006 - 20:20 #9
der skal også en position relative omkring det ...

<div style="position:relative;">

<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);overflow:hidden;position:absolute;left:0px;top:0px" onmousemove="moveCrop(event,'billede');" onclick="if (cropActive) {endCrop('billede');} else {startCrop(event,'billede');}" ></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}" onmousemove="moveCrop(event,this.id);">

</div>
Avatar billede mclemens Nybegynder
29. august 2006 - 20:33 #10
(glem bare den relative div ... det oprindelige script tager ikke hensyn til det ...)
Avatar billede lund_dk Praktikant
29. august 2006 - 22:03 #11
Er mere eller mindre forvirret over alle de rettelser *G*
Kunne du sende den endelig rettelse og scriptet i helform.. :)
Avatar billede lund_dk Praktikant
29. august 2006 - 22:05 #12
Nu tog jeg lige denne version. Der er fejl i den, i og med det område man vil skære ud, det kan ryge ud over billedes kanter.


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>
Ingen titel</title>




<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {
      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
      placeCropElm();
      cropActive = true;
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
          endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
          placeCropElm();
      }
  }

  function placeCropElm() {
      frm = document.form1;
      elmPos = getPos(document.getElementById(cropElmId));

      cropElm = document.getElementById(cropElmId).style;

      cropElm.left = Math.min(startPos.x,endPos.x)+"px";
      cropElm.top = Math.min(startPos.y,endPos.y)+"px";


    tmpx=Math.max(endPos.x-startPos.x,startPos.x-endPos.x);
    tmpy=Math.max(endPos.y-startPos.y,startPos.y-endPos.y);


    if(endPos.y>startPos.y){

      frm.y1.value=startPos.y;
      cropElm.top=frm.y1.value+"px";

      frm.y2.value=Math.max(tmpy,tmpx);
      cropElm.height=frm.y2.value+"px";
    }


    if(endPos.x>startPos.x){
      frm.x1.value = startPos.x;
      cropElm.left = frm.x1.value+"px";

      frm.x2.value=Math.max(tmpy,tmpx);
      cropElm.width = frm.x2.value+"px";
    }


    if(endPos.x<startPos.x){
      frm.x1.value = startPos.x-Math.max(tmpy,tmpx);
      cropElm.left = frm.x1.value+ "px";

      frm.x2.value = Math.max(tmpy,tmpx);
      cropElm.width = frm.x2.value+"px";
    }


    if(endPos.y<startPos.y){
      frm.y1.value = startPos.y-Math.max(tmpy,tmpx);
      cropElm.top = frm.y1.value+"px";

      frm.y2.value = Math.max(tmpy,tmpx);
      cropElm.height = frm.y2.value+"px";
    }

  }



  function endCrop(elmId) {
      cropActive = false;
  }


</script>
</head>
<body>
<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);overflow:hidden;position:absolute;left:0px;top:0px" onmousemove="moveCrop(event,'billede');" onclick="if (cropActive) {endCrop('billede');} else {startCrop(event,'billede');}" ></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}" onmousemove="moveCrop(event,this.id);">

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">
</form>
</body>
</html>
Avatar billede lund_dk Praktikant
29. august 2006 - 22:09 #13
Se screenshot på : www.lund.dk/crop.gif
Avatar billede mclemens Nybegynder
29. august 2006 - 22:16 #14
Jep, den sidste jeg lægger med er denne:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
html,body{margin:0px;padding:0px;}
#cont{position:relative;margin:200px auto 0px auto;width:500px;}
</style>


<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;

var offl=offt=0;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {

offl=offt=0;

tn=document.getElementById("billede");if(tn.offsetLeft)offl+=tn.offsetLeft;if(tn.offsetTop)offl+=tn.offsetTop;
for(;tn=tn.parentNode;){if(tn.offsetLeft)offl+=tn.offsetLeft;if(tn.offsetTop)offt+=tn.offsetTop;}

      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX-offl : e.pageX-offl;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY-offt : e.pageY-offt;
      placeCropElm('new');
      cropActive = true;
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX-offl : e.pageX-offl;
          endPos.y = (typeof e.clientY == "number") ? e.clientY-offt : e.pageY-offt;
          placeCropElm();
      }
  }

  function placeCropElm(t) {
      frm = document.form1;
      elmPos = getPos(document.getElementById(cropElmId));

      cropElm = document.getElementById(cropElmId).style;

      cropElm.left = Math.min(startPos.x,endPos.x)+"px";
      cropElm.top = Math.min(startPos.y,endPos.y)+"px";

o=document.getElementById('billede');

    tmpx=Math.max(endPos.x-startPos.x,startPos.x-endPos.x);
    tmpy=Math.max(endPos.y-startPos.y,startPos.y-endPos.y);




    if(endPos.y>startPos.y){

      frm.y1.value=startPos.y;
      cropElm.top=frm.y1.value+"px";


      tmp=(false)?o.offsetHeight:Math.max(tmpy,tmpx);
      frm.y2.value=tmp;
      cropElm.height=tmp+"px";
    }


    if(endPos.x>startPos.x){
      frm.x1.value = startPos.x;
      cropElm.left = frm.x1.value+"px";

      frm.x2.value=Math.max(tmpy,tmpx);
      cropElm.width = frm.x2.value+"px";
    }


    if(endPos.x<startPos.x){
      frm.x1.value = startPos.x-Math.max(tmpy,tmpx);
      cropElm.left = frm.x1.value+ "px";

      frm.x2.value = Math.max(tmpy,tmpx);
      cropElm.width = frm.x2.value+"px";
    }


    if(endPos.y<startPos.y){
      frm.y1.value = startPos.y-Math.max(tmpy,tmpx);
      cropElm.top = frm.y1.value+"px";

      frm.y2.value = Math.max(tmpy,tmpx);
      cropElm.height = frm.y2.value+"px";
    }



    if(t=='new'){
      cropElm.width = "0px";
      cropElm.height = "0px";
    }

  }



  function endCrop(elmId) {
      cropActive = false;
  }


</script>
</head>
<body><br><br><br><br><div id="cont">







<div style="position:relative;">

<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);overflow:hidden;position:absolute;left:0px;top:0px" onmousemove="moveCrop(event,'billede');" onclick="if (cropActive) {endCrop('billede');} else {startCrop(event,'billede');}" ></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}" onmousemove="moveCrop(event,this.id);">
</div>

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">
</form>




</div></body></html>









... [ Nu tog jeg lige denne version. Der er fejl i den, i og med det område man vil skære ud, det kan ryge ud over billedes kanter. ] ... Det er ikke en fejl jeg har lavet - den er i den oprindelige:


tryk knappen ned - og kør ligeså stille ned mod nederste højre hjørne ... der er ingen validering på om den når ud over...


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>



<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {
      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
      placeCropElm();
      cropActive = true;
      writePosition(elmId);
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
          endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
          placeCropElm();
          writePosition(elmId);
      }
  }

  function placeCropElm() {
      cropElm = document.getElementById(cropElmId).style;
      cropElm.left = Math.min(startPos.x,endPos.x)+"px";
      cropElm.top = Math.min(startPos.y,endPos.y)+"px";
      cropElm.width = Math.max(endPos.x-startPos.x,startPos.x-endPos.x)+"px";
      cropElm.height = Math.max(endPos.y-startPos.y,startPos.y-endPos.y)+"px";
  }

  function endCrop(elmId) {
      cropActive = false;
      writePosition(elmId);
  }

  function writePosition(ID) {
      frm = document.form1;
      elmPos = getPos(document.getElementById(ID));
      frm.x1.value = Math.min(startPos.x,endPos.x)-elmPos.x;
      frm.y1.value = Math.min(startPos.y,endPos.y)-elmPos.x;
      frm.x2.value = Math.max(startPos.x,endPos.x)-elmPos.y;
      frm.y2.value = Math.max(startPos.y,endPos.y)-elmPos.y;
  }

</script>
</head>
<body>
<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);;position:absolute;left:0px;top:0px" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,'billede');}"  onmousemove="moveCrop(event,'billede');"></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}" onmousemove="moveCrop(event,this.id);">

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">
</form>
</body>
</html>




... dertil opdagede jeg følgende ... den tager ikke hensyn til om man scroller - det skal også implementeres og den tager heller ikke hensyn til en relativ placering ... og returnerer heller ikke positionerne korrekt i forhold til billedet ... (nedenstående er oprindelig script - rykket lidt ned og centreret i en relativ placeret div)







<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>





<script type="text/javascript">
  var startPos = {x:0,y:0}
  var endPos = {x:0,y:0}
  var cropElmId = "cropDiv";
  var cropActive = false;

  function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
  }
  function startCrop(e,elmId) {
      e = (!e) ? event : e;
      startPos.x = endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
      startPos.y = endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
      placeCropElm();
      cropActive = true;
      writePosition(elmId);
  }

  function moveCrop(e,elmId) {
      if (cropActive) {
          e = (!e) ? event : e;
          endPos.x = (typeof e.clientX == "number") ? e.clientX : e.pageX;
          endPos.y = (typeof e.clientY == "number") ? e.clientY : e.pageY;
          placeCropElm();
          writePosition(elmId);
      }
  }

  function placeCropElm() {
      cropElm = document.getElementById(cropElmId).style;
      cropElm.left = Math.min(startPos.x,endPos.x)+"px";
      cropElm.top = Math.min(startPos.y,endPos.y)+"px";
      cropElm.width = Math.max(endPos.x-startPos.x,startPos.x-endPos.x)+"px";
      cropElm.height = Math.max(endPos.y-startPos.y,startPos.y-endPos.y)+"px";
  }

  function endCrop(elmId) {
      cropActive = false;
      writePosition(elmId);
  }

  function writePosition(ID) {
      frm = document.form1;
      elmPos = getPos(document.getElementById(ID));
      frm.x1.value = Math.min(startPos.x,endPos.x)-elmPos.x;
      frm.y1.value = Math.min(startPos.y,endPos.y)-elmPos.x;
      frm.x2.value = Math.max(startPos.x,endPos.x)-elmPos.y;
      frm.y2.value = Math.max(startPos.y,endPos.y)-elmPos.y;
  }

</script>
</head>
<body>

scroll ned...

<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<div style="margin:0px auto;width:500px;position:relative;">

<div id="cropDiv" style="border:1px solid #000;background-color:#ddf;opacity:0.5;filter:alpha(opacity=50);;position:absolute;left:0px;top:0px" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,'billede');}"  onmousemove="moveCrop(event,'billede');"></div>
<img src="billede.png" id="billede" style="width:200px;height:300px;" onclick="if (cropActive) {endCrop(this.id);} else {startCrop(event,this.id);}" onmousemove="moveCrop(event,this.id);">

<form name="form1">
  x1: <input type="text" name="x1"> - y1: <input type="text" name="y1"><br>
  x2: <input type="text" name="x2"> - y2: <input type="text" name="y2">


</div>
</form>
</body>
</html>







... Jeg troede umiddelbart at den virkede og at det bare var krydsning på kvadrat boxen der manglede ... jeg tog desværre fejl (gid jeg havde set de ting inden :D )


... jeg har lige et par pakker der skal pakkes og skal nok lidt tidligere i seng idag og når derfor ikke at kigge på alle rettelserne (samt det at det måske ville være bedre at få noget bygget op fra bunden - jeg roder sådan når jeg retter)


... kaster lige et alternativt link som du måske kan kigge lidt på (mener at jeg har været med til at pille ved en lignende tidligere) ...
Avatar billede mclemens Nybegynder
29. august 2006 - 22:21 #15
kig evt. på http://www.eksperten.dk/spm/714353 (har ikke checket om den matcher) - min jeg kastede derinde er ikke komplet, vi droppede den og arbejdede videre på hans - men check evt. om hans måske kan bruges ...
Avatar billede lund_dk Praktikant
30. august 2006 - 09:33 #16
Syntes ikke jeg kan få det til at virke, det script i det andet exp spg.

Har kigget mig lidt lun på http://www.dhtmlgoodies.com/scripts/image-crop/image-crop.html men så er problemet bare igen at jeg skal have fast høje/bredde og det er der ikke i det script
Avatar billede lund_dk Praktikant
30. august 2006 - 12:21 #17
Er det jeg fra DHTMLgoodies jeg har valgt at bruge.. det fungrer bare perfek.
Har du mulighed for at se hvad er i scriptet skal ændres så bredde/højde er fast?
Avatar billede mclemens Nybegynder
30. august 2006 - 12:31 #18
Muligvis (er på arbejde p.t., kigger på den iaften) ...
Avatar billede mclemens Nybegynder
30. august 2006 - 15:05 #19
image-crop.js :

....................................

    var crop_script_alwaysPreserveAspectRatio = false;

    rettest til:

    var crop_script_alwaysPreserveAspectRatio = true;

....................................

    var crop_script_fixedRatio = false;

    rettest til:

    var crop_script_fixedRatio = 1;

....................................
Avatar billede mclemens Nybegynder
30. august 2006 - 17:16 #20
(rettest -> rettes)
Avatar billede lund_dk Praktikant
30. august 2006 - 21:24 #21
Du er en guttermand.. nu virker det hele som det skal

Tak for hjælpen.
Avatar billede mclemens Nybegynder
30. august 2006 - 21:26 #22
Velbekom, og tak for point :)
Avatar billede lund_dk Praktikant
30. august 2006 - 21:33 #23
Hvis du vil se skidtet i action, så kan du på www.ww.lund.dk Opret en profil,og så tilføje et profilbillede..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester