18. august 2004 - 22:01
Der er
39 kommentarer og 1 løsning
Visning af store billeder der er større end skærmen
Hejsa - jeg har en gæstebog hvor billeder besøgende har uploadet med deres besked vises som små thumbnails. Når man klikker på dem vises de så i fuld størrelse i et nyt vindue som lukker hvis man klikker på billedet. Det jeg gerne vil er at sørge for at billeder som der er større end skærmen skaleres korrekt ned. Som det ses af koden i nedenstående skære billedet bare over lige nu. ----kode----> <%@ page language="java"%> <%@ page errorPage="error_page.jsp" %> <%@ page isThreadSafe = "false" %> <%@ page import = "java.net.URLEncoder"%> <%@ page import = "JavaBeans.Bruger"%> <% String inputgb = request.getParameter("gbpfile"); String gbpFile_name = URLEncoder.encode(inputgb); Bruger tempAktuelBruger = (Bruger) session.getAttribute("aktuelBruger"); if(tempAktuelBruger == null) { tempAktuelBruger = new Bruger(); tempAktuelBruger.setSprog("dansk"); session.setAttribute("aktuelBruger",tempAktuelBruger); } String aktueltSprog = tempAktuelBruger.getSprog(); %> <HTML> <HEAD> <%if(aktueltSprog.equals("dansk")) {%> <TITLE>ERK.dk - Gæstebog: <%= inputgb %></TITLE> <%}else if(aktueltSprog.equals("engelsk")) {%> <TITLE>ERK.dk - Guestbook: <%= inputgb %></TITLE> <%}%> </HEAD> <BODY bgcolor="black"> <center> <img onclick="window.close()" src="gimages/<%= gbpFile_name %>" border="0" id="pic" name="pic" onload="updater()"> <script language="javascript"> function updater(){ var xx = (document.images.pic.width)+50; var yy = (document.images.pic.height)+80; if(screen.availHeight<yy){ yy=screen.availHeight-30; window.document.body.style.overflow='scroll'; }else{ window.document.body.style.overflow='hidden'; } window.resizeTo(xx,yy); } </script> <font face="verdana" size="2" color="gray"> <%if(aktueltSprog.equals("dansk")) {%> <br>klik på billedet for at lukke vinduet <%}else if(aktueltSprog.equals("engelsk")) {%> <br>click the picture to close this window <%}%> </font> </BODY> </HTML>
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
18. august 2004 - 22:08
#1
if(screen.availHeight<yy){ yy=screen.availHeight-30; document.images[0].height = yy;//måske skal du gøre plads til forskellig chrome }else{ window.document.body.style.overflow='hidden'; }
18. august 2004 - 22:16
#2
roenvig>> Det virkede nogenlunde, men klarede kun højden og jeg får en uønsket vertikal scroll-bar på vinduet...
18. august 2004 - 22:40
#3
<script language="javascript"> function updater(){ var x = screen.availWidth,dx; var y = screen.availHeight,dy; var xx = document.images.pic.width+50; var yy = document.images.pic.height+80; if(xx+30>x||yy+30>y){ dx = x/(xx+30); dy = y/(yy+30); if(dy>=dx){ xx = (xx-50)*dx+50; yy = (yy-80)*dx+80; document.images.pic.width = xx; document.images.pic.height = yy; }else{ xx = (xx-50)*dy+50; yy = (yy-80)*dy+80; document.images.pic.width = xx; document.images.pic.height = yy; } } document.body.style.overflow='hidden'; window.resizeTo(xx,yy); } </script> -- absolut utestet, men ideen skulle være der !-)
18. august 2004 - 22:49
#4
ok - det virkede. Problemet er nu kun blot at billedet er samme størrelse som skærmen, og at man derfor ikke kan se tekstlinien nedenunder, selvom man hiver menubaren op i toppen af skærmen...
18. august 2004 - 22:50
#5
åh ja - og den sorte ramme omkring mangler på højre side...
18. august 2004 - 22:56
#6
Måske sådan ?-) window.resizeTo(xx+30,yy+30);
18. august 2004 - 22:58
#7
bedre, men problemet med at billedet er samme størrelse som skærmen, så man ikke kan se den nederste del af det, består...
18. august 2004 - 23:03
#8
Prøv at fjerne de 50 og 80 fra funktionen så ...
18. august 2004 - 23:08
#9
så vil vinnduet slet ikke udvide :o)
18. august 2004 - 23:18
#10
problemet er altså stadig at billedet er samme størrelse som skærmen, så man ikke kan se den nederste del af tekstlinien nedenunder...
18. august 2004 - 23:18
#11
18. august 2004 - 23:40
#12
Jeg kan ikke helt gennemskue det, men måske sådan: <script language="javascript"> function updater(){ var x = screen.availWidth,dx; var y = screen.availHeight,dy; var xx = document.images.pic.width+50; var yy = document.images.pic.height+80; if(xx+30>x||yy+30>y){ dx = x/(xx+30); dy = y/(yy+30); if(dy>=dx){ xx = (xx-50)*dx; yy = (yy-80)*dx; }else{ xx = (xx-50)*dy; yy = (yy-80)*dy; } } document.images.pic.width = xx; document.images.pic.height = yy; document.body.style.overflow='hidden'; window.resizeTo(xx+30,yy+30); } </script>
18. august 2004 - 23:51
#13
I mozilla kommer teksten med, men der er en uønsket scrollbar - i explorer mangler teksten :o)
18. august 2004 - 23:53
#14
Jeg har selv lavet understående - eneste problem med den er at teksten står for langt nede i explorer :o) Måske bliver det ikke bedre... ;o[ <script language="javascript"> function updater(){ var x = screen.availWidth,dx; var y = screen.availHeight,dy; var xx = document.images.pic.width+50; var yy = document.images.pic.height+80; if(xx+30>x||yy+30>y){ dx = x/(xx+30); dy = y/(yy+30); if(dy>=dx){ xx = (xx-50)*dx+50; yy = (yy-80)*dx+80; document.images.pic.width = (xx-100); document.images.pic.height = (yy-100); }else{ xx = (xx-50)*dy+50; yy = (yy-80)*dy+80; document.images.pic.width = (xx-100); document.images.pic.height = (yy-100); } document.body.style.overflow='hidden'; //window.resizeTo(xx,yy); window.resizeTo(xx-70,yy-20); } else { document.body.style.overflow='hidden'; window.resizeTo(xx,yy); } } </script>
18. august 2004 - 23:55
#15
Jeg kan slet ikke åbne det i Mozilla ?-) -- måske fordi din start-størrelse er under det mindst tilladte åbnede vindue på 100*100 ?o]
18. august 2004 - 23:57
#16
hvordan sætter man start-størrelsen??
18. august 2004 - 23:59
#17
Du sætter startstørrelsen til width=10,height=10 i kaldet: 'width=10,height=10,menubar=0,scrollbars=yes,resizable=no,status=no,toolbar=no') -- iøvrigt er det i de browsere, jeg kender, kun nødvendigt med: 'width=100,height=100,scrollbars=yes')
19. august 2004 - 00:10
#18
ok - jeg kan nu åbne det uanset hvad. I mozilla står teksten korrekt nedenunder billedet, men i explorer står teksten lige ved underkanten - væk fra billedet - se selv samme ex. som før igen... Damn it - det er så tæt på at være helt rigtigt... ;o0
19. august 2004 - 00:16
#19
By the way - roenvig; Jeg håber selvfølgelig du vil hjælpe mig med den sidste finpudsning, men hvis du har fået nok så smid lige et svar inden du smutter - du skal uanset hvad have point :o}
19. august 2004 - 00:16
#20
Du kommer jo uforvarende til at ødelægge aspektet på den måde ... <script language="javascript"> function updater(){ var x = screen.availWidth,dx; var y = screen.availHeight,dy; var xx = document.images.pic.width+50; var yy = document.images.pic.height+80; if(xx+30>x||yy+30>y){ dx = x-100/(xx+30); dy = y-100/(yy+30); if(dy>=dx){ xx = (xx-50)*dx; yy = (yy-80)*dx; }else{ xx = (xx-50)*dy; yy = (yy-80)*dy; } } document.images.pic.width = xx; document.images.pic.height = yy; document.body.style.overflow='hidden'; window.resizeTo(xx+30,yy+30); } </script>
19. august 2004 - 00:21
#21
jeg prøvede ovenstående og fik et enooooormt vindue - der er noget galt der :o)
19. august 2004 - 00:34
#22
Er du sikker på, at der ikke var en eller anden åndsvag ting, du ikke fik med ?-)
19. august 2004 - 00:43
#23
jeg copy/pastede det hele :o)
19. august 2004 - 00:49
#24
Mærkeligt, for det, der sker i den kode er, at den skal tro, at skærmen er 100 mindre på hver led ?-)
19. august 2004 - 00:51
#25
Ja det ville være smart - desværre får man et kæmpe vindue...
19. august 2004 - 01:01
#26
Argh, der mangler jo nogle sæt paranteser ... <script language="javascript"> function updater(){ var x = screen.availWidth,dx; var y = screen.availHeight,dy; var xx = document.images.pic.width+50; var yy = document.images.pic.height+80; if(xx+30>x||yy+30>y){ dx = (x-100)/(xx+30); dy = (y-100)/(yy+30); if(dy>=dx){ xx = (xx-50)*dx; yy = (yy-80)*dx; }else{ xx = (xx-50)*dy; yy = (yy-80)*dy; } } document.images.pic.width = xx; document.images.pic.height = yy; document.body.style.overflow='hidden'; window.resizeTo(xx+30,yy+30); } </script>
19. august 2004 - 01:04
#27
Det giver følgende resultat: Størrelsen er god, men i explorer mangler teksten nedenunder og i mozilla er teksten der men der er en uønsket vertikal scrollbar :o)
19. august 2004 - 01:07
#28
window.resizeTo(xx+30,yy+100);
19. august 2004 - 01:22
#29
hmm jo, men afstanden mellem teksten o g billedet bliver for stor af en eller anden grund...
19. august 2004 - 01:23
#30
Har du prøvet at kigge på den <br> du har ?-)
19. august 2004 - 01:26
#31
ja.. den er korrekt :o) - den gamler version som ikke resizede for store billeder havde teksten stående perfekt nedenunder :o) - se selv på nogle af de andre billeder i gæstebogen som ikke er for store ;o}
19. august 2004 - 01:28
#32
i mozilla er teksten helt perfekt, men i explorer sker der noget så afstanden mellem billede og tekst bliver større... (her taler jeg om min egen kode-version). It's weird....
19. august 2004 - 01:37
#33
-- prøv at give en anelse mere luft i bredden !-) window.resizeTo(xx+36,yy+100);
19. august 2004 - 01:45
#34
Det fixede den for store afstand mellem tekst og billede, men nu er der for stor afstand mellem tekst og vinduets border! :o)
19. august 2004 - 01:46
#35
prøver lige at finpuds...
19. august 2004 - 01:58
#36
Nu er den der kraftstejlme! YEAH! Eneste problem er nu at den nye kode får små billeder til at blive vist med forkert aspect-ratio... Jeg kan evt. hæfte min else på igen. Ellers kunne man måske lave noget kode der fordoblede størrelsen på billedet og rammen hvis de var mindre end x?
19. august 2004 - 02:01
#37
uanset hvad så må du skrive et svar så du kan få nogle point :o)
19. august 2004 - 02:03
#38
Muy bueno !-) -- og velbekomme '-)
19. august 2004 - 02:05
#39
Det er mig der takker mange gange - du har gjort en perfektionist meget glad ;o}
19. august 2004 - 02:05
#40
Jeg takker for point ;~}
Vi tilbyder markedets bedste kurser inden for webudvikling