Avatar billede quarkb Nybegynder
27. juni 2005 - 23:30 Der er 9 kommentarer og
2 løsninger

Width & height på .jpg og .gif billeder

Kan man hente width og height på et jpg/gif billede før det visse på siden?

Altså ikke under upload.
Avatar billede ahv Nybegynder
27. juni 2005 - 23:55 #1
Hej,

Mon du kan bruge det her eksempel til noget? http://www.serverobjects.com/comp/imgsize.zip

Jeg har ingen forstand på ASP, kun PHP, men det ser nu fint ud, af det jeg lige kan tyde.

Venligst,
Alexander Holm Viborg
Avatar billede idiotbarn Nybegynder
28. juni 2005 - 00:09 #2
SKAL du bruge det i asp? for ellers kan du bruge javascript til det...
Avatar billede idiotbarn Nybegynder
28. juni 2005 - 00:10 #3
altså...skal du bruge det i aspkoden
Avatar billede musicchart.dk Nybegynder
28. juni 2005 - 01:00 #4
Sæt disse funktioner ind øverst på dit dokument, eller smide det i en seperat fil og include det:

<%
function picSize(sti,billede)
   
    call gfxSpex(server.MapPath(sti & billede), X, Y, d, t)
   
    picSize = X & "," & Y
   
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                ' is GIF

        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

    elseif left(strType, 2) = strBMP then        ' is BMP

        strImageType = "BMP"
        Width = lngConvert(GetBytes(flnm, 19, 2))
        Height = lngConvert(GetBytes(flnm, 23, 2))
        Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))
        gfxSpex = True

    elseif strType = strPNG then            ' Is PNG

        strImageType = "PNG"
        Width = lngConvert2(GetBytes(flnm, 19, 2))
        Height = lngConvert2(GetBytes(flnm, 23, 2))
        Depth = getBytes(flnm, 25, 2)

        select case asc(right(Depth,1))
          case 0
              Depth = 2 ^ (asc(left(Depth, 1)))
              gfxSpex = True
          case 2
              Depth = 2 ^ (asc(left(Depth, 1)) * 3)
              gfxSpex = True
          case 3
              Depth = 2 ^ (asc(left(Depth, 1)))  '8
              gfxSpex = True
          case 4
              Depth = 2 ^ (asc(left(Depth, 1)) * 2)
              gfxSpex = True
          case 6
              Depth = 2 ^ (asc(left(Depth, 1)) * 4)
              gfxSpex = True
          case else
              Depth = -1
        end select


    else

        strBuff = GetBytes(flnm, 0, -1)        ' Get all bytes from file
        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
 
 
  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
%>


Så kalder du funktionen picSize:

<%
billedeXY = picSize("/billeder/","billede.jpg")

strAry = split(billedeXY,",")

' her henter du X værdien ud ved strAry(0), og Y værdien ved strAry(1)
response.Write("Billedet er: " & strAry(0) & "px X " & strAry(1) & "px")
%>
Avatar billede kratluskeren Nybegynder
28. juni 2005 - 14:58 #5
Har du undersøgt om der er en komponent installeret på serveren der kan gøre det, for det vil i så fald være lettest at bruge den.

Fx. ASP Image komponenten
Avatar billede quarkb Nybegynder
28. juni 2005 - 15:04 #6
Det er min egen server så jeg kan bare installere en evt. komponent
Avatar billede musicchart.dk Nybegynder
28. juni 2005 - 15:08 #7
Har du prøvet mit forslag? så slipper du for at installere et komponent
Avatar billede quarkb Nybegynder
28. juni 2005 - 15:09 #8
Ikke endnu, jeg får først til til at kikke på det i aften, er på arbejder :o(
Avatar billede quarkb Nybegynder
28. juni 2005 - 22:33 #9
Ja, det er i asp det skal bruges.
Jeg har prøvet dit forslag musicchart.dk det ser udtil at være det jeg leder efter.
Avatar billede quarkb Nybegynder
28. juni 2005 - 22:38 #10
ahv ser også ud til at havde fundet noget i samme retning, så jeg har valgt at give jeg begge point.

1.000 tak for jeres hjælp.
Avatar billede musicchart.dk Nybegynder
28. juni 2005 - 22:53 #11
Sålænge du er tilfreds :o) tak for points
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