webForumDet fria alternativet

kolla bildstorlek?

ASPur ASP

10 svar · 755 visningar · startad av fredrik

fredrikMedlem sedan dec. 19991 072 inlägg
#1

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!

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/

nanneMedlem sedan dec. 19991 749 inlägg
#2

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

------------------
Jag har ingen chans...

nanne.net

fredrikMedlem sedan dec. 19991 072 inlägg
#3

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).

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/

emissionMedlem sedan dec. 19996 721 inlägg
fredrikMedlem sedan dec. 19991 072 inlägg
#5

Ok, då vet jag det...problemet här var också att webhotellet inte ville lägga installera några komponenter...

Men tack ändå!

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/

JacobMedlem sedan dec. 2000503 inlägg
#6

Är det någon som vet om man kan kolla upplösningen på en bild?

------------------
ja©ob

OveRRidEMedlem sedan feb. 200112 078 inlägg
#7

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]

Jesper TMedlem sedan nov. 20017 144 inlägg
#8

Jag får samma fel!
Någon som vet?

Trevlig Helg

Jesper :birp

------------------
If ASPackad date-1 then ASPerin Now

voigtann1Medlem sedan juni 20019 519 inlägg
#9

ä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.
------------------
//voigtan
:: voigtan.org

"de går inte att lära en gammal norrläning byta namn på irc" - gammalt kinesiskt uttryck

[Redigerat av voigtann1 den 09 feb 2002]

solbulleMedlem sedan mars 20015 287 inlägg
voigtann1Medlem sedan juni 20019 519 inlägg
#11

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>

------------------
//voigtan
:: voigtan.org

"de går inte att lära en gammal norrläning byta namn på irc" - gammalt kinesiskt uttryck

[Redigerat av voigtann1 den 11 feb 2002]

135 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)