Avatar billede eerikk Nybegynder
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>
Avatar billede roenving Novice
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';
}
Avatar billede eerikk Nybegynder
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...
Avatar billede roenving Novice
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 !-)
Avatar billede eerikk Nybegynder
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...
Avatar billede eerikk Nybegynder
18. august 2004 - 22:50 #5
åh ja - og den sorte ramme omkring mangler på højre side...
Avatar billede roenving Novice
18. august 2004 - 22:56 #6
Måske sådan ?-)

window.resizeTo(xx+30,yy+30);
Avatar billede eerikk Nybegynder
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...
Avatar billede roenving Novice
18. august 2004 - 23:03 #8
Prøv at fjerne de 50 og 80 fra funktionen så ...
Avatar billede eerikk Nybegynder
18. august 2004 - 23:08 #9
så vil vinnduet slet ikke udvide :o)
Avatar billede eerikk Nybegynder
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...
Avatar billede eerikk Nybegynder
18. august 2004 - 23:18 #11
eksempel ses med øverste billede på: http://www.erk.dk/vis_gaestebog.jsp?page-index=1
Avatar billede roenving Novice
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>
Avatar billede eerikk Nybegynder
18. august 2004 - 23:51 #13
I mozilla kommer teksten med, men der er en uønsket scrollbar - i explorer mangler teksten :o)
Avatar billede eerikk Nybegynder
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>
Avatar billede roenving Novice
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]
Avatar billede eerikk Nybegynder
18. august 2004 - 23:57 #16
hvordan sætter man start-størrelsen??
Avatar billede roenving Novice
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')
Avatar billede eerikk Nybegynder
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
Avatar billede eerikk Nybegynder
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}
Avatar billede roenving Novice
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>
Avatar billede eerikk Nybegynder
19. august 2004 - 00:21 #21
jeg prøvede ovenstående og fik et enooooormt vindue - der er noget galt der :o)
Avatar billede roenving Novice
19. august 2004 - 00:34 #22
Er du sikker på, at der ikke var en eller anden åndsvag ting, du ikke fik med ?-)
Avatar billede eerikk Nybegynder
19. august 2004 - 00:43 #23
jeg copy/pastede det hele :o)
Avatar billede roenving Novice
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 ?-)
Avatar billede eerikk Nybegynder
19. august 2004 - 00:51 #25
Ja det ville være smart - desværre får man et kæmpe vindue...
Avatar billede roenving Novice
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>
Avatar billede eerikk Nybegynder
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)
Avatar billede roenving Novice
19. august 2004 - 01:07 #28
window.resizeTo(xx+30,yy+100);
Avatar billede eerikk Nybegynder
19. august 2004 - 01:22 #29
hmm jo, men afstanden mellem teksten o g billedet bliver for stor af en eller anden grund...
Avatar billede roenving Novice
19. august 2004 - 01:23 #30
Har du prøvet at kigge på den <br> du har ?-)
Avatar billede eerikk Nybegynder
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}
Avatar billede eerikk Nybegynder
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....
Avatar billede roenving Novice
19. august 2004 - 01:37 #33
-- prøv at give en anelse mere luft i bredden !-)

window.resizeTo(xx+36,yy+100);
Avatar billede eerikk Nybegynder
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)
Avatar billede eerikk Nybegynder
19. august 2004 - 01:46 #35
prøver lige at finpuds...
Avatar billede eerikk Nybegynder
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?
Avatar billede eerikk Nybegynder
19. august 2004 - 02:01 #37
uanset hvad så må du skrive et svar så du kan få nogle point :o)
Avatar billede roenving Novice
19. august 2004 - 02:03 #38
Muy bueno !-)

-- og velbekomme '-)
Avatar billede eerikk Nybegynder
19. august 2004 - 02:05 #39
Det er mig der takker mange gange - du har gjort en perfektionist meget glad ;o}
Avatar billede roenving Novice
19. august 2004 - 02:05 #40
Jeg takker for point ;~}
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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