WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Beskärning av inlägg (https://www.wn.se/forum/showthread.php?t=2082)

rille77 2004-04-21 00:37

Har stött på stora problem när jag ska beskära en bild med ASPJpeg, det ska vara en "dynamisk" beskärning där den som laddar upp bilden får en förutbestämd storlek som den slutgiltiga bilden ska vara i men han ska själv kunna välja vilken del av bilden som ska sparas.
Jag får detta felmeddelande då jag ska beskära min bild:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'CLng'
/crop/crop.asp, line 11


Och så här ser min kod ut på sidan där beskärningen sker(Rad 11 fet):
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Path = Server.MapPath("images")
Response.write Request.Querystring("image")
FilePath = Path & "/" & Request.Querystring("image")
Response.write FilePath
SavePath = Path & "\test_small.jpg"

Jpeg.Open FilePath
x1 = CLng(Request.form ("coordX"))
x2 = CLng(Request.form ("coordX")) + 90
y1 = CLng(Request.form ("coordY"))
y2 = CLng(Request.form ("coordY")) + 118

Jpeg.Width = Jpeg.OriginalWidth
Jpeg.Height = Jpeg.OriginalHeight
'Jpeg.Crop 20, 30, 80, 70
Jpeg.Crop y1, x1, y2, x2

Jpeg.Save SavePath

Nån som kan ha en aning om vad jag gör för fel, CoordX/Y hämtar jag från ett JavaScript och skickar med i ett formulär till sidan där beskärningan ska ske.

Här är scriptet och formuläret som används för att läsa in positionen på beskärningsytan.

function mark() {
var ref = document.getElementById('mark');
var ref2 = document.markform;
ref2.coordX.value = parseInt(ref.style.left, 10) - dragObj.OffsetX;
ref2.coordY.value = parseInt(ref.style.top, 10) - dragObj.OffsetY;
ref2.coordW.value = parseInt(ref.style.width, 10);
ref2.submit();
}
</SCRIPT>

<FORM name="markform" action="crop.asp?image=UF.gif" method="post">
<INPUT type="hidden" name="coordX">
<INPUT type="hidden" name="coordY">
<INPUT type="hidden" name="coordW">
<INPUT type="hidden" name="extension">
<DIV id=mark style="BORDER-RIGHT: white 1px dashed; BORDER-TOP: white 1px dashed; LEFT: 127px; BORDER-LEFT: white 1px dashed; WIDTH: 90px; BORDER-BOTTOM: white 1px dashed; POSITION: absolute; TOP: 37px; HEIGHT: 118px">
<DIV onmousedown="dragStart(event,'mark');" style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; WIDTH: 100%; BORDER-BOTTOM: black 1px solid; HEIGHT: 100%">
</DIV>
</DIV>
[img]images/UF.gif[/img]

<input name="Submit" type="submit" value="submit">
</FORM>

Robert 2004-04-21 02:28

Debugga och se vilka värden du får in via coordX.
Felet blir ju för att cLng inte kan konvertera talet, dvs det passar inte in inom ramarna för en Long. Kolla efter decimaler oxo, dvs testa att köra med cDbl och se om det fungerar. Det kan även hända att det finns nåt skräptecken med, eventuellt kör trim() odyl.

Testa även:

cLng(val(trim(coordX)))

...för att vara på den säkra sidan! =)

Btw; du borde kunna köra cInt med tanke på att bilderna kanske inte är så stora att de kräver typen long.


Alla tider är GMT +2. Klockan är nu 02:08.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson