[Javascript] Plaatjes resizen

Pagina: 1
Acties:
  • 69 views sinds 30-01-2008

  • Toni
  • Registratie: Februari 2001
  • Niet online
Ik heb al een tijd een probleem met het volgende script. Het werkt namelijk soms wel, en soms niet. |:( Het is de bedoeling dat een 'preview' wordt gegeven van het plaatje wat wordt geselecteerd met de filebrowser.

Deze preview moet op de client worden geresized, maar de hoogte / breedte verhoudingen van het plaatje moeten wel bewaard blijven.

Het script geeft soms wel gewoon het plaatje op juiste manier weer, maar soms met de verkeerde afmetingen (1 pixel hoog of/en breed)Het lijkt wel een bug van de browser, maar ik weet niet of dit zo is. Kan iemand me helpen?
alvast bedankt!
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<HTML>

<SCRIPT LANGUAGE="JavaScript">
 <!--
   
  // Even uitleggen wat hier gebeurt:
  // Eerst wordt een nieuw Image aangemaakt
  // Dan wordt aan de hand van de URL uit de file-textbox het picture object
  // gevuld. Van het picture-object worden vervolgens de afmetingen opgenomen.
  // Vervolgens worden de afmetingen aan de hand van MaxWidth of MaxHeight
  // ingesteld. Tenslotte wordt de afbeelding weergegeven.
 
  function changePicture(image_index, image_file, maxwidth, maxheight){
   
   picture = new Image(); 
   picture_url=document.logoform.elements[image_file].value;

   picture.src=picture_url;
   picture_width = picture.width;
   picture_height = picture.height;
   
   if (maxwidth>0){
     
     if(picture_width<maxwidth){
     document.images[image_index].width=picture_width;
     document.images[image_index].height=picture_height;
     } else {  
       document.images[image_index].width=maxwidth;
       document.images[image_index].height=(maxwidth/picture_width)*picture_height;
     }  
   } else {
     if(picture_height<maxheight){
       document.images[image_index].width=picture_width;
       document.images[image_index].height=picture_height;
     } else {  
         document.images[image_index].width=(maxheight/picture_height)*picture_width;
         document.images[image_index].height=maxheight;
       }  
     }  
   
   document.images[image_index].src=picture.src;
  
  } // changePicture
 
 //-->
</SCRIPT>
 
 
 <BODY>
 
  <FORM NAME=logoform>
 
  <TABLE BORDER=0>
    <TR>
     <TD VALIGN="top">Logo</TD>
     <TD VALIGN="top">:</TD>
     <TD VALIGN="top">[img]../images/spacer_gray.gif[/img]
    </TR> 
    <TR>
     <TD VALIGN=middle ALIGN=left>Filename</TD>
     <TD VALIGN=middle ALIGN=left>:</TD>
     <TD VALIGN=middle ALIGN=left><INPUT TYPE=file CLASS=text NAME=logofile ACCEPT="*.gif" onFocus="changePicture('logo_preview','logofile',0,90);" SIZE=33></TD>
    </TR>

  </TABLE>   
 
 </FORM>
 
 </BODY>
 
</HTML>

We need more cowbell


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:54

crisp

Devver

Pixelated

Waarschijnlijk is het probleem dat het plaatje nog niet volledig geladen is als je de width en height uitvraagt.
Maak een loopje waarin je picture.readyState=='complete' uitvraagt voordat je de width en height opvraagt.

Intentionally left blank


  • Toni
  • Registratie: Februari 2001
  • Niet online
Yo! Hartelijk bedankt, het werkt nu helemaal goed!

We need more cowbell


Verwijderd

Sorry dat ik dit oude topic weer even te voorschijn haal, maar ik kom er na uren zoeken niet uit.

Moet een image resizen, doe ik met dit stukje JavaScript

code:
1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
var maxWidth = 440;
function scaleImage(im) {

if (im.width > maxWidth) {
im.orgwidth = im.width;
im.width = maxWidth;
im.onclick = unscaleImage;
}
}
</script>


Vervolgens het plaatje laden:

code:
1
[img]"<%=RS("grootplaatje")%>"[/img]


Soms werkt dit wel, soms niet. Nu las ik hier dat hij de afmetingen van het plaatje uit probeert te lezen voordat het plaatje binnen is. Ook staat er een paar posts boven deze, dat je dat d.m.v. een loopje kunt voorkomen. Ik heb echter totaal geen kaas gegeten van JavaScript, en ook een JavaScript boek en veel zoekwerk helpen niet.

Dus, wie kan me hier ff mee helpen? Het liefst het loopje ff integreren in bovenstaande code ;)

  • mocean
  • Registratie: November 2000
  • Laatst online: 30-03 18:32
Maak een loopje waarin je picture.readyState=='complete' uitvraagt voordat je de width en height opvraagt.
Als je dit niet zelf in de functie kan krijgen, zou ik eerst gewoon Javascript gaan leren!

Koop of verkoop je webshop: ecquisition.com


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 14-05 03:07

Pelle

🚴‍♂️

Scriptrequests doen we hier niet aan; zoek op google eens naar javascript tutorial ofzo :)
Pagina: 1

Dit topic is gesloten.