Avatar billede tblaster Nybegynder
17. december 2004 - 20:37 Der er 8 kommentarer og
1 løsning

Finde bredden (width) på et billed

Hejsa

Jeg udskriver pt. et billed vha. følgende kode:
Str = Str & "<center><img border=""0"" src=""/billeder/" & DB_Url & """ alt=""" & DB_Navn & """></center>"

Hvordan kan jeg finde bredden på billedet inden jeg udskriver det. Det skal gerne fikses således at det ikke kræver nogen form for speciel asp komponent og det skal derfor måske klares vha. javascript!

På forhånd tak!
Avatar billede tofte Juniormester
18. december 2004 - 20:08 #1
er det en speciel type billeder du skal bruge det til? JPG, GIF, mm. Lige et sprøgsmål for forståelsens skyld. Hvorfor skal du bruge breden, kan du ikke bare indsætte billedet?
Avatar billede tblaster Nybegynder
18. december 2004 - 21:54 #2
jeg skal bruge bredden på billedet der er placeret på følgende sti:
/billeder/" & DB_Url

Det kan være gif, jpg eller bmp billeder.

Årsagen til at jeg skal bruge billedet størrelse er at hvis den har en bredde over en given størrelse så vil jeg sætte en width paramter på for at sikre at billedet ikke bryder mine frames!
Avatar billede tofte Juniormester
27. december 2004 - 21:22 #3
du kan evt bruge følgende, det virker kun for GIF og JPG, har ikke lige haft tid til at udbygge den til BMP.
<%
 
''''''''''''''This script was written by Lawrence Finn''''''''''''''
''''''''''''''Anyone is free to use this file or alter''''''''''''''
''''''''''''''it at their discretion.  lngconvert and ''''''''''''''
''''''''''''''lngconvert2 were written by Mike Shaffer''''''''''''''
''''''''''''''The rest is based on his file IMGSZ with''''''''''''''
''''''''''''''major modifications.  Now it actually works'''''''''''


  function lngConvert(strTemp)
    lngConvert = clng(ascb(leftb(strTemp, 1)) + ((ascb(rightb(strTemp, 1)) * 256)))
  end function

  function lngConvert2(strTemp)
    lngConvert2 = clng(ascb(rightb(strTemp, 1)) + ((ascb(leftb(strTemp, 1)) * 256)))
  end function
'lngconvert was taken from Mike Shaffer's IMGSZ
 
    function getSize(fileName, width, height, flType)
    dim GIFflType
    dim BMPflType
    dim flTypeOf
    dim obj
    flTypeOf = ""
    flType = "(unknown)"
    getSize = False
    PNGflType = chr(137)&chr(80)&chr(78)
    GIFflType = chrb(71)&chrb(73)&chrb(70)
    BMPflType = chr(66)&chr(77)
   
    Const adTypeBinary = 1
    Const adSaveCreateOverWrite = 2
    Set obj = Server.CreateObject("ADODB.Stream")
    obj.Type = adTypeBinary
    obj.Open
    obj.LoadFromFile fileName
    bdy=obj.Read()

    flTypeOf = leftb(bdy,3)
    if flTypeOf = GIFflType then
        flType = "GIF"   
        strbuffer = bdy
        width= lngconvert(midb(strbuffer, 7, 2))
        Height = lngconvert(midb(strbuffer, 9, 2))
        getSize = True
    else
        strBuff = bdy
        SizeofFile = lenb(strBuff)
        flgFound=0
        strTarget = chrb(255) & chrb(216) & chrb(255)
       
        flgFound = instrb(strBuff, strTarget)
        char = (midb(strbuff, 1, 3))
        if flgFound = 0 then
              exit function
        end if
        flType = "JPG"
        lngPos = flgFound + 2
        ExitLoop = false
        do while ExitLoop = False and lngPos < SizeofFile
          do while ascb(midb(strBuff, lngPos, 1)) = 255 and lngPos < SizeofFile
              lngPos = lngPos + 1
          loop
          if ascb(midb(strBuff, lngPos, 1)) < 192 or ascb(midb(strBuff, lngPos, 1)) > 195 then
            lngMarkerSize = lngConvert2(midb(strBuff, lngPos + 1, 2))
            lngPos = lngPos + lngMarkerSize  + 1
          else
            ExitLoop = True
          end if
        loop
        if ExitLoop = False then
          Width = -1
          Height = -1
        else
          Height = lngConvert2(midb(strBuff, lngPos + 4, 2))
          Width = lngConvert2(midb(strBuff, lngPos + 6, 2))
          getSize = True
        end if
    end if
  set obj = Nothing
  end function


s = getSize(server.MapPath("./test.gif"),w,h,t)
Response.Write h&" "&w

%>
Avatar billede tofte Juniormester
06. marts 2005 - 19:09 #4
er der liv her?
Avatar billede tblaster Nybegynder
07. marts 2005 - 09:25 #5
havde ikke set at der var blevet smidt et svar ... jeg vil da lige se på det ... sorry
Avatar billede tblaster Nybegynder
08. marts 2005 - 21:05 #6
Har du mulighed for at udbygge den så den også virker til bmp og png billeder? Hvis så vil jeg gerne give dig max. point for spørgsmålet!

På den måde hvor du finder højden og bredden, arbejder koden direkte med den binære information af billedet, ikke? Er det på en ligende måde muligt at opdater information i billedet, således at man kan tilføje følgnede til et billeds egenskaber:
Titel
Emne
Forfatter
Kategori
Nøgleord
Kommentar

Hvis du ved om det er muligt og tror du kan hjælpe med det så vil jeg gerne oprette et ekstra spørgsmål omkring dette. Jeg vil nemlig gerne have således at jeg kan tage et billed og tilføje de nævnte information til den.
Avatar billede tofte Juniormester
09. marts 2005 - 17:22 #7
Har meget dårlig tid nu, så jeg kan ikke lige lave noget nu. Mig bekendt ligger titel, emne mm ikke i den binære struktur af selve billedet. Men derimod som en attribut i filsystemet. Så man kan ikke via ovenstående rette i disse oplysninger. Men det kan være jeg tager fejl.
Avatar billede tblaster Nybegynder
09. marts 2005 - 19:36 #8
Nå men smid et svar så skal du få dine point! Du får lgie 20 ekstra da det er en imponerende kode du har samlet der. Hvis du på et tidspunkt få rettet den tid så den også kan køre med png og bmp så sig endelig til!
Avatar billede tofte Juniormester
09. marts 2005 - 20:26 #9
Du får lige et svar. Skal nok lige se på det andet når jeg får tid. Skriv lige en kommentar om noget tid, når jeg har glemt dat :-)
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
Kurser inden for grundlæggende programmering

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