Avatar billede ponyboye Nybegynder
17. august 2004 - 09:24 Der er 15 kommentarer og
1 løsning

Billedskallering og udtræk

Jeg har en database hvor jeg lager stien til billedet

I database har jeg disse felter:

id = Autonummerering
Filsti = Tekst
Width = Tal
Height = Tal

Nu vil jeg gerne have at billedet bliver trukket ud af databasen med en fast størrelse i både højde og bredde.

Der skal så også være mulighed for at klikke sig til billedet i normal størrelse.

Når jeg indsætte koden nedefor for jeg en fejl som jeg aldrig har set før:

Microsoft VBScript runtime error '800a0006'

Overflow

/beskriv.asp, line 51

og linje 51 er: Percent = FixWidth/Width)


<%
strSQL = "Select * From keywords Where kw_ID = "&Request.Querystring("id")&""
Set rs = Conn.Execute(strSQL)

If (Not RS.BOF) And (Not RS.EOF) Then
  RS.MoveFirst
        While Not RS.EOF
           
                           
                    If Width >= 100 Then
                        FixWidth = 100
                    Else
                        FixWidth = Width
                    End if
                   
                Percent = FixWidth/Width)
                FixHeight = Height*Percent)

                    Response.Write ("<img src='" & rs("Filsti") & "' width='" & rs ("FixWidth") & "' height='" & rs ("FixHeight") & "'>")
                    RS.MoveNext
  Wend
    Else
        Response.Write "Beklager - Men er er ikke noget billedet til denne vare. <br />"
    End If

CloseDatabase

%>
Avatar billede eagleeye Praktikant
17. august 2004 - 09:32 #1
width har ikke en værdi før du bruger den i if sætningen eller før denne linje

Percent = FixWidth/Width)


Så spørgsmålet er hvor skal width komme fra? Er det en kolonne i databasen?
Eks:



<%
strSQL = "Select * From keywords Where kw_ID = "&Request.Querystring("id")&""
Set rs = Conn.Execute(strSQL)

If (Not RS.BOF) And (Not RS.EOF) Then
  RS.MoveFirst
        While Not RS.EOF
           
                    Width = Rs("Width")
                    If Int(Width) >= 100 Then
                        FixWidth = 100
                    Else
                        FixWidth = Width
                    End if
                   
                Percent = FixWidth/Width)
                FixHeight = Height*Percent)

                    Response.Write ("<img src='" & rs("Filsti") & "' width='" & rs ("FixWidth") & "' height='" & rs ("FixHeight") & "'>")
                    RS.MoveNext
  Wend
    Else
        Response.Write "Beklager - Men er er ikke noget billedet til denne vare. <br />"
    End If

CloseDatabase

%>
Avatar billede eagleeye Praktikant
17. august 2004 - 09:34 #2
Hov og FixWidth og FixHeight er kolonner men variable og width og hight er kolonner i recordsetet så prøv:


<%
strSQL = "Select * From keywords Where kw_ID = "&Request.Querystring("id")&""
Set rs = Conn.Execute(strSQL)

If (Not RS.BOF) And (Not RS.EOF) Then
  RS.MoveFirst
        While Not RS.EOF
           
                    Width = Rs("Width")
                    If Int(Width) >= 100 Then
                        FixWidth = 100
                    Else
                        FixWidth = Width
                    End if
                   
                Percent = int(FixWidth/Width)
                FixHeight = int(rs("Height")*Percent)

                    Response.Write ("<img src='" & rs("Filsti") & "' width='" & FixWidth & "' height='" & FixHeight & "'>")
                    RS.MoveNext
  Wend
    Else
        Response.Write "Beklager - Men er er ikke noget billedet til denne vare. <br />"
    End If

CloseDatabase

%>
Avatar billede eagleeye Praktikant
17. august 2004 - 09:34 #3
hmm første linje tekst skulle være:
Hov,  FixWidth og FixHeight er ikke kolonnernavne men variable og width og Height er kolonner i recordsetet så prøv:
Avatar billede ponyboye Nybegynder
17. august 2004 - 09:56 #4
tak jeg prøver lige
Avatar billede ponyboye Nybegynder
17. august 2004 - 10:14 #5
nu er der da ikke nogen fejl, bredden er god nok, men højde er 1-2 px
Avatar billede eagleeye Praktikant
17. august 2004 - 10:26 #6
ok umiddelbart kan jeg ikke se den skulle få det helt ved siden af??

men du ka jo prøve at kigge på disse på linjer hvor udregningen af højden er:

                Percent = int(FixWidth/Width)
                FixHeight = int(rs("Height")*Percent)


Evt prøv at uskrive de forskellige tal og regne efter:

                Percent = int(FixWidth/Width)
                FixHeight = int(rs("Height")*Percent)
                response.write "percent = " & persent & " --- Height = " & rs("Height") & " --- FixHeight = " & FixHeight & "<br>"
Avatar billede eagleeye Praktikant
17. august 2004 - 10:28 #7
ho og så med rigtig variable navne:

                Percent = int(FixWidth/Width)
                FixHeight = int(rs("Height")*Percent)
                response.write "percent = " & Percent & " --- Height = " & rs("Height") & " --- FixHeight = " & FixHeight & "<br>"
Avatar billede ponyboye Nybegynder
17. august 2004 - 10:51 #8
den forstår jeg ikke lige
Avatar billede eagleeye Praktikant
17. august 2004 - 10:53 #9
Hvis den regner højden ud til 1 eller 2 pixel så må der være enten en fejl i udregningen af percent eller FixHeight. Det kan også være hight i databasen er meget lille.

udregningen sker i af højden sker i disse linjer:

                Percent = int(FixWidth/Width)
                FixHeight = int(rs("Height")*Percent)


Prøv at udksrive de forskellige variable så kan du regne efter om den regner rigtigt eller der er noget andet som gør højden er alt for lille:

med rigtig variable navne:

                Percent = int(FixWidth/Width)
                FixHeight = int(rs("Height")*Percent)
                response.write "percent = " & Percent & " --- Height = " & rs("Height") & " --- FixHeight = " & FixHeight & "<br>"
Avatar billede ponyboye Nybegynder
17. august 2004 - 11:00 #10
okay prøver at lege lidt
Avatar billede ponyboye Nybegynder
17. august 2004 - 12:03 #11
nu virker det men ikke som det skulle.

Hvis jeg uploader et billedet i størrelsen 500*500 skal koden vise billedet i størrelsen 100*100 uden at jeg skal sætte størrelsen i databasen.

Og det er så først når der klikkes på billedet at den skal hente det i fuld størrelse.
Avatar billede eagleeye Praktikant
17. august 2004 - 12:07 #12
Så du gemmer ikke størrelsen i databasen?

Så må du havde fat i en billede komponent som kan give dig størrelsen på billedet. Eller lave noget kode med FSO som kan læse størrelsen.
Avatar billede eagleeye Praktikant
17. august 2004 - 12:09 #13
Der er en lille komponet der hedder ImageSize som kan finde størrelsen.
Du kan bruge ASPimage eller anden komponetn.
Hvilke komponenter har du adgang til?
Avatar billede ponyboye Nybegynder
17. august 2004 - 12:26 #14
Jeg har gemt størrelsen på billedet i databasen, men det var ment så den har mulighed for at finde den rigtide størrelse.

Sådanne komponenter er der ikke på serveren. Men er de gratis vil mit webhotel gerne installer det.

Lige nu er der aspSmartUpload på server der har med billeder at gøre.
Avatar billede eagleeye Praktikant
17. august 2004 - 12:58 #15
Ok, så der ikke noget problem

Arh jeg har lavet en bøf :(  der skal jo ikke Int omkring i denne linje:
                Percent = int(FixWidth/Width)

Det skal jo netop være et komma tal for den kan regne fixhieght ud så prøv sådan her:

                Percent = FixWidth/Width
Avatar billede ponyboye Nybegynder
17. august 2004 - 20:24 #16
Det er ud til at virke fint. jeg tænkte op om du ikke har lyst til at hjælpe mig med noget mere nu da du er inden i det?
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