---
title: "Markera bild m lager samt förminska lagret."
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/62884-markera-bild-m-lager-samt-förminska-lagret"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "solbulle"
published: "2002-12-22T13:44:54.000Z"
updated: "2003-01-01T23:17:20.000Z"
replies: 9
views: 328
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/62884-markera-bild-m-lager-samt-förminska-lagret"
---

# Markera bild m lager samt förminska lagret.

## #1 — solbulle, 2002-12-22T13:44Z

Jag försöker mig på att skapa en sida där man kan ladda upp en bild samt sen beskära den mm.

Det jag tänkte att ni skulle fixa åt mig  :e  är just funktionen med beskärningen, eller rättare sagt markeringen av det område man vill ha ut.
jag tänkte att det skulle fungera som så att man har en bild på sidan samt tar ett genomskinligt lager och på så sätt markerar det område man vill ha ut. 
Skulle väldigt gärna även vilja att om man typ kunde förminska det övre lagret genom att dra i nedre högra hörnet.. proportionelt.

Jag hittade ett script som Jojoxx samt doggelito skruvat på och har tagit mig friheten att utgå från det. <http://www.webforum.nu/showthread.php?s=&threadid=49475&highlight=flytta+and+lager>

Mina problem:

\[RED: Fixat\]
Jag kan nu inte ens sätta in min bild på sidan, om jag gör det kan 
jag inte dra mitt lager på andra ställen än där det just är text i lagret. Hur lösa det?
\[/RED: Fixat\]

Hur kan jag förminska lagret proportionellt genom att dra i högra nedre hörnet? (Eller motsvarande)

Har jag med mig kod som är överflödig?

Nuvarande kod:

```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
</head>
<body>

<script language="JavaScript" src="layerlib.js" type="text/JavaScript"></script>
<script language="JavaScript" src="stdiolib.js" type="text/JavaScript"></script>
<script language="JavaScript" type="text/JavaScript">

	function savepos(){

document.form2.x.value=(getLayerX('foo'));
document.form2.y.value=(getLayerY('foo'));

document.form2.xx.value=(getLayerWidth('foo'));
document.form2.yy.value=(getLayerHeight('foo'));

	}
	function glue(layer){
		offsetX=getMouseX()-getLayerX(layer);	
		offsetY=getMouseY()-getLayerY(layer);	
		currentLayer=layer;
		setOnMousemove("moveit();"); 
	}
	function rubber(){
		setOnMousemove(""); 
	}
	function moveit(){
		moveLayerAbs(currentLayer,Math.min(Math.max(getMouseX()-offsetX,0),getClientWidth()-getLayerWidth('foo')),Math.min(Math.max(getMouseY()-offsetY,0),getClientHeight()-getLayerHeight('foo')))
	}
	function getLayerWidth(Id){
		if (document.all){
			return parseInt(document.all[Id].style.width);
		} else if (document.layers){
			return parseInt(document.layers[Id].width);
		} else if (document.getElementById){
			return parseInt(document.getElementById(Id).style.width);
		}
	}
	function getLayerHeight(Id){
		if (document.all){
			return parseInt(document.all[Id].style.height);
		} else if (document.layers){
			return parseInt(document.layers[Id].height);
		} else if (document.getElementById){
			return parseInt(document.getElementById(Id).style.height);
		}
	}

</script>
<div
	id="foo"
	style="position:absolute;top:150px;left:150px;width:300px;height:300px;border:1px solid black; padding:5px;"
	onMousedown="glue('foo');"
	onMouseup="rubber();">
	Move me!
</div>

<form name="form2">
X<input type="text" name="x">
Y<input type="text" name="y">
<br>
Bredd<input type="text" name="xx">
Höjd<input type="text" name="yy">
<input type="button" value="Sätt värden" onClick="savepos();">
</form>

</body>
</html>
```

Åsså har jag en länk till sidan:

Utan bild:
<http://www.solbulle.com/wf/lager/index.html>
Med bild:
<http://www.solbulle.com/wf/lager/bild.html>

Permalänk: https://www.webforum.nu/p/62884

## #2 — solbulle, 2002-12-22T16:41Z

Attans, har alla tagit julledigt?

Löste dragandet av lagret genom att sätta in en transparent bild. -Verkar fungera. (Kanske ska ha en halvt genomskinlig... jaja, det är överkurs i nuläget.)

Permalänk: https://www.webforum.nu/p/893238

## #3 — Johnsen, 2002-12-23T14:19Z

Kolla på detta lilla exempel för beskärningen:

```
<script>
document.onmousemove = cropIt
document.onmousedown = lockIt
document.onmouseup = unLockIt

xlock = 0;
inPos = 0;

function cropIt(e){

element = document.getElementById("foo")
x = (document.all)? event.x : e.pageX ;
y = (document.all)? event.y : e.pageY;

status=inPos

	if(	(element.offsetWidth - (x - parseInt(element.style.left))) < 0 &&
		(element.offsetWidth - (x - parseInt(element.style.left))) >-9 &&
		(element.offsetHeight - (y - parseInt(element.style.top))) < 0 &&
		(element.offsetHeight - (y - parseInt(element.style.top))) >-9 ){
			document.body.style.cursor="se-resize";
			inPos = 1;
	}
	else{
		document.body.style.cursor="default";
		inPos = 0;
	}

	if(xlock==1){
		element.style.width = x - parseInt(element.style.left)
		element.style.height = y - parseInt(element.style.top)
	}

	}

	function lockIt(){
		if(inPos == 1){
			xlock = 1
		}
	}
	function unLockIt(){
		xlock = 0
	}
</script>

Drag i bilden precis nedanför det nedre högra hörnet...

<div id="foo" style="position:absolute;top:50px; left:50px; width:120px; height:120px; overflow:hidden; border:1px solid red;">
<img src="bild.jpg" galleryimg="no">
</div>
```

Permalänk: https://www.webforum.nu/p/893498

## #4 — solbulle, 2002-12-23T15:04Z

Kaxigt!  

Ska se om jag kan klura ut hur det fungerar och implentera det "hos mig".

Tack.

Permalänk: https://www.webforum.nu/p/893516

## #5 — solbulle, 2002-12-23T19:39Z

Innan jag såg din variant har jag slagit mig in på en annan variant baserad på att "clippa" ett lager.
Styrningen av detta har jag nu löst med länkar, inte alls så kul som ditt förslag.

Är det nu någon som kanske kan ge mig någon hjäl på vägen att implentera scriptet ovanfär i min kod alt. kanske har ideer om hur hela min kod bör föändras.

Tycker onekligen att koden bara växer o växer kanske mycket i onödan?

(Iofs kommer flera av formulärsfälten med dess uträkningar vara överflödiga i slutändan.)

Nuvarande kod:

```
<script language="JavaScript" src="dynlayer.js"></script>
<script language="JavaScript" src="mouseevents.js"></script>
<script language="JavaScript" src="drag.js"></script>

<script language="JavaScript" type="text/JavaScript">

function init() {
	// initialize DynLayers
	foolager = new DynLayer("foo")

	// for IE 5.0 must manually set the clip values again
	if (is.ie5) foolager.clipInit(0,600,600,0)
	
	// for other browsers it's not necessary because the layer in this example
	// is clipped to defaults so I don't have to pass clip values
	else foolager.clipInit()

	// add the draggable layers to the drag object
	drag.add(foolager)
	
	drag.onDragMove = dragMove

	initMouseEvents()
}

function dragMove(x,y) {
	document.myform.layerx.value = this.obj.x
	document.myform.layery.value = this.obj.y

	formula();
}

function formula() {

	document.myform.clipx.value = foolager.clipValues('t')
	document.myform.clipy.value = foolager.clipValues('r')
	document.myform.clipxx.value = foolager.clipValues('b')
	document.myform.clipyy.value = foolager.clipValues('l')
	document.myform.bredden.value = foolager.clipValues('b') - foolager.clipValues('t')
	document.myform.hojden.value = foolager.clipValues('r') - foolager.clipValues('l')
	document.myform.x1.value = parseInt(document.myform.layerx.value) - 200 + parseInt(foolager.clipValues('l'))
	document.myform.y1.value = parseInt(document.myform.layery.value) + parseInt(foolager.clipValues('t'))
	document.myform.x2.value = parseInt(document.myform.layerx.value) - 200 + parseInt(foolager.clipValues('r'))
	document.myform.y2.value = parseInt(document.myform.layery.value) + parseInt(foolager.clipValues('b'))
	document.myform.imgname.value = "front.jpg"
}

function timerrace(a,b,c,d) {
X=setInterval("foolager.clipBy("+a+","+b+","+c+","+d+");formula()",100)
}
</script>

<body bgcolor="#ffffff" onLoad="init()">

<a href="javascript:formula()" onmousedown="timerrace(0,-10,-10,0)" onmouseup="clearInterval(X)">-Höger</a>

<div id="foo" style="position:absolute;top:0px;left:200px;width:1000px;height:1000px;clip:rect(0px 600px 600px 0px); z-index: 2 ;">

<img src="transp.gif" name="transa" height="1000" widht="1000"  style="filter:alpha(opacity=20);"></div>

<div id="bilden" style="position:absolute;top:0px;left:200px;width:500px;height:500px;"><img src="front.jpg"></div>
```

Länk till testsida: <http://www.solbulle.com/wf/lager/layout.html>

Permalänk: https://www.webforum.nu/p/893646

## #6 — solbulle, 2002-12-23T19:41Z

.js-filerna finns här: 
<http://www.solbulle.com/wf/lager/dynlayer.js>
<http://www.solbulle.com/wf/lager/mouseevents.js>
<http://www.solbulle.com/wf/lager/drag.js>

Det är väl de som ställer till det när jag försöker kombinera alltihop.

Permalänk: https://www.webforum.nu/p/893650

## #7 — solbulle, 2002-12-23T20:41Z

Å annars har vi en hopkock av Johnsens samt Jojoxx script, men det är något som krockar i dom!?!

```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
</head>

<body>

<script language="JavaScript" src="layerlib.js" type="text/JavaScript"></script>

<script language="JavaScript" src="stdiolib.js" type="text/JavaScript"></script>

<script language="JavaScript" type="text/JavaScript">
	function glue(layer){
		offsetX=getMouseX()-getLayerX(layer);	
		offsetY=getMouseY()-getLayerY(layer);	
		currentLayer=layer;
		setOnMousemove("moveit();"); 
	}
	function rubber(){
		setOnMousemove(""); 
	}
	function moveit(){
		moveLayerAbs(currentLayer,getMouseX()-offsetX,getMouseY()-offsetY)
	}
</script>

<script>
document.onmousemove = cropIt
document.onmousedown = lockIt
document.onmouseup = unLockIt

xlock = 0;
inPos = 0;

function cropIt(e){

element = document.getElementById("foo")
x = (document.all)? event.x : e.pageX ;
y = (document.all)? event.y : e.pageY;

status=inPos

	if(	(element.offsetWidth - (x - parseInt(element.style.left))) < 0 &&
		(element.offsetWidth - (x - parseInt(element.style.left))) >-9 &&
		(element.offsetHeight - (y - parseInt(element.style.top))) < 0 &&
		(element.offsetHeight - (y - parseInt(element.style.top))) >-9 ){
			document.body.style.cursor="se-resize";
			inPos = 1;

//document.form2.x.value = element.style.width
	}
	else{
		document.body.style.cursor="default";
		inPos = 0;
	}

	if(xlock==1){
		element.style.width = x - parseInt(element.style.left)
		element.style.height = y - parseInt(element.style.top)

	}

	}

	function lockIt(){
		if(inPos == 1){
			xlock = 1
		}
	}
	function unLockIt(){
		xlock = 0
	}
</script>

<div
	id="foo"
	style="position:absolute;top:50px;left:50px;width:300px;height:300px;background:yellow; filter:alpha(opacity=20);z-index: 2 ;"
	onMousedown="glue('foo');"
	onMouseup="rubber();">

</div>

<div id="bilden" style="position:absolute;top:0px;left:200px;width:500px;height:500px;z-index: 1; "><img src="front.jpg"></div>

</body>
</html>
```

Permalänk: https://www.webforum.nu/p/893682

## #8 — solbulle, 2003-01-01T16:00Z

Nej ni gubbar.

Jag får inte till det. Denna kod jag har är ju helt ok med JoHnsens script att kunna förstora/förminska lagret. Men mitt önskemål är då alltså att man även skall kunna förflytta det översta lagret över det undre. (Eg. ej utanför.) Samt att eg. skall det översta lagret endast kunna förstoras/förminskas proportionellt (mao alltid en kvadrat.)

Någon med ideer?

```
<script>
document.onmousemove = cropIt
document.onmousedown = lockIt
document.onmouseup = unLockIt

xlock = 0;
inPos = 0;

function cropIt(e){

element = document.getElementById("foo")
x = (document.all)? event.x : e.pageX ;
y = (document.all)? event.y : e.pageY;

status=inPos

	if(	(element.offsetWidth - (x - parseInt(element.style.left))) < 0 &&
		(element.offsetWidth - (x - parseInt(element.style.left))) >-9 &&
		(element.offsetHeight - (y - parseInt(element.style.top))) < 0 &&
		(element.offsetHeight - (y - parseInt(element.style.top))) >-9 ){
			document.body.style.cursor="se-resize";
			inPos = 1;
	}
	else{
		document.body.style.cursor="default";
		inPos = 0;
	}

	if(xlock==1){
		element.style.width = x - parseInt(element.style.left)
		element.style.height = y - parseInt(element.style.top)
	}

	}

	function lockIt(){
		if(inPos == 1){
			xlock = 1
		}
	}
	function unLockIt(){
		xlock = 0
	}
</script>

Drag i bilden precis nedanför det nedre högra hörnet...

<div id="foo" style="position:absolute;top:50px; left:50px; width:120px; height:120px; overflow:hidden; border:1px solid red;z-index: 3 ;">
<img src="transp.gif" galleryimg="no"   height="1000" widht="1000"  style="filter:alpha(opacity=20);">
</div>

<div id="bilden" style="position:absolute;top:50px;left:50px;overflow:hidden; z-index: 2 ;">
<img src="front.jpg">
</div>
```

Länk: <https://www.solbulle.com/wf/lager/drag.html>

Permalänk: https://www.webforum.nu/p/900541

## #9 — Peter S, 2003-01-01T23:04Z

> Någon med ideer?

Självklart!

```
.
.
.
if(xlock==1){
     [B]if((x - parseInt(element.style.left)) < 808 && (y-parseInt(element.style.top)) < 650){
          element.style.width = x - parseInt(element.style.left)
          element.style.height = y - parseInt(element.style.top)
     }[/B]
}
.
.
.
```

 :)

Permalänk: https://www.webforum.nu/p/900769

## #10 — solbulle, 2003-01-01T23:17Z

Peter S:  Kalas!

Ett steg i rätt riktning.  :)

Permalänk: https://www.webforum.nu/p/900778

---

Tråden på webben: https://www.webforum.nu/amne/javascript/62884-markera-bild-m-lager-samt-förminska-lagret
