Nepp det går inte utan en komponent. Jag har för mig att det går under ASP 3.0. Men är inte säker
PS i PHP skriver man bara $size=GetImageSize("bildnamn"); DS
10 svar · 762 visningar · startad av fredrik
Hej, jag undrar om det är nån som vet om det går att kolla en bildstorlek (alltså bredd och höjd) mha av asp.
Jag har kollat på: http://www.asptoday.com/articles/19991213.htm
Men där måste man ha en image-komponent, och den kostar pengar...
Anledningen till att jag behöver det är att när man laddar upp bilder så ska kunden inte kunna "förstöra" hela layouten med jättestora bilder.
Tacksam för hjälp!
Nepp det går inte utan en komponent. Jag har för mig att det går under ASP 3.0. Men är inte säker
PS i PHP skriver man bara $size=GetImageSize("bildnamn"); DS
Hej, det går att kolla bredden och höjden. Har hittat en lösning helt i asp utan någon komponent!
Kanske inte lika smidigt som i php...men det funkar!
Mycket kod är det i alla fall...Har modifierat koden så att det bara går med jpg filer och gif filer. Men det ska även gå med png och bmp filer om man vill det.
<%
function GetBytes(flnm, offset, bytes)
Dim objFSO
Dim objFTemp
Dim objTextStream
Dim lngSize
on error resume next
Set objFSO = CreateObject("Scripting.FileSystemObject")
' First, we get the filesize
Set objFTemp = objFSO.GetFile(flnm)
lngSize = objFTemp.Size
set objFTemp = nothing
fsoForReading = 1
Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)
if offset > 0 then
strBuff = objTextStream.Read(offset - 1)
end if
if bytes = -1 then ' Get All!
GetBytes = objTextStream.Read(lngSize) 'ReadAll
else
GetBytes = objTextStream.Read(bytes)
end if
objTextStream.Close
set objTextStream = nothing
set objFSO = nothing
end function
function lngConvert(strTemp)
lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))
end function
function lngConvert2(strTemp)
lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))
end function
function gfxSpex(flnm, width, height, depth, strImageType)
dim strPNG
dim strGIF
dim strBMP
dim strType
strType = ""
strImageType = "(unknown)"
gfxSpex = False
strPNG = chr(137) & chr(80) & chr(78)
strGIF = "GIF"
strBMP = chr(66) & chr(77)
strType = GetBytes(flnm, 0, 3)
if strType = strGIF then
strImageType = "GIF"
Width = lngConvert(GetBytes(flnm, 7, 2))
Height = lngConvert(GetBytes(flnm, 9, 2))
Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)
gfxSpex = True
else
strBuff = GetBytes(flnm, 0, -1)
lngSize = len(strBuff)
flgFound = 0
strTarget = chr(255) & chr(216) & chr(255)
flgFound = instr(strBuff, strTarget)
if flgFound = 0 then
exit function
end if
strImageType = "JPG"
lngPos = flgFound + 2
ExitLoop = false
do while ExitLoop = False and lngPos < lngSize
do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize
lngPos = lngPos + 1
loop
if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))
lngPos = lngPos + lngMarkerSize + 1
else
ExitLoop = True
end if
loop
'
if ExitLoop = False then
Width = -1
Height = -1
Depth = -1
else
Height = lngConvert2(mid(strBuff, lngPos + 4, 2))
Width = lngConvert2(mid(strBuff, lngPos + 6, 2))
Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)
gfxSpex = True
end if
end if
end function
sub test(flnm)
if right(flnm, 3)="gif" then
Width = lngConvert(GetBytes(flnm, 7, 2))
Height = lngConvert(GetBytes(flnm, 9, 2))
Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)
else
strBuff = GetBytes(flnm, 0, -1)
lngSize = len(strBuff)
flgFound = 0
strTarget = chr(255) & chr(216) & chr(255)
flgFound = instr(strBuff, strTarget)
strImageType = "JPG"
lngPos = flgFound + 2
ExitLoop = false
do while ExitLoop = False and lngPos < lngSize
do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize
lngPos = lngPos + 1
loop
if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))
lngPos = lngPos + lngMarkerSize + 1
else
ExitLoop = True
end if
loop
if ExitLoop = "False" then
Width = -1
Height = -1
Depth = -1
else
Height = lngConvert2(mid(strBuff, lngPos + 4, 2))
Width = lngConvert2(mid(strBuff, lngPos + 6, 2))
Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)
end if
end if
a=width
b=height
response.write("BREDDEN ÄR: " &a &" HÖJDEN ÄR: " &b)
end sub
call test(server.mappath("test/kamel.jpg"))
%>
Man skickar alltså in vilken bild man vill kolla längst ner vid call sub(bild).
Ok, då vet jag det...problemet här var också att webhotellet inte ville lägga installera några komponenter...
Men tack ändå!
Är det någon som vet om man kan kolla upplösningen på en bild?
Fredrik:
Är bildnamnet Case Sensitive? Jag får att bilden är -1 x -1 stor, oavsett bild typ..
Sen om jag gör ändelsen till små bokstäver (.gif ex) så får jag
Invalid procedure call or argument: 'asc'
på rad 41.
hrmm..
[Redigerat av OveRRidE den 29 jul 2001]
ändra om:
strImageType = "JPG"
till:
strImageType = "GIF"
så fungera både JPG och gif för mej
Jag kan köra både StOrA OcH BlAnDaDe det kvittar.. ändra det till GIF så fungera det.
en annan sak du kan göra (utan asp):
<img src="bilder/aj.jpg" name="bilden"><br>
<script language="javascript">
document.write(document.bilden.width + " * " + document.bilden.height);
</script>