[JS]Image.width & image.height probleem

Pagina: 1
Acties:

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
ok heb nu al verschillende script geprobeerd maar kom er niet uit.
Wat ik wil is voordat ik een image upload met behulp van een asp functie dat ik met JS de resolutie valideer.
Op dit moment heb ik het volgende zeer simpele script dat een alert weergeeft met daarin de waardes van de image. Maar laten nu al deze waardes "undefined" zijn........
Ik krijg dit dus bijna bij elk script.
Bij 1 script kreeg ik waardes te zien maar deze sloegen werkelijk nergens op. Van een afbeelding van 200x200 kreeg ik een breedte van 252xxx en een hoogte van 0.

Wie kan mij met behulp van onderstaand script iets opweg helpen?
JavaScript:
1
2
3
4
5
var theImage = "http://localhost/pagina_1/images/icon1.gif";
function showImageSize(theImage) {   
alert('height=' + theImage.height+      '; width=' + theImage.width +      '; hspace=' + theImage.hspace +      '; vspace=' + theImage.vspace)
}
showImageSize(theImage)


een twee stuk zeer experimentele code heb ik ook nog(wat overigens ook 0,0 aan h*b weergeeft) :)
JavaScript:
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
function checkFileSize() {
  var totalSize = 0;
  var htmlSize;
  var hoogte = 0000;
  var breedte = 0000;
  var overLimit = false;
  for (j = 1; j <= nfiles; j++) {
    var himg = document.getElementById('himg'+j);
    var size = document.getElementById('size'+j);
    var fileSize = himg.fileSize;
    
    
    fileSize = parseInt(fileSize);

    if (fileSize < 0) {
      size.innerHTML = '-';
    } else {
      htmlSize = formatSize(fileSize);
      if ( fileSize>maxFileSize ) {
        htmlSize += ' (over limit, ' + formatSize(maxFileSize) + ' max) ';
        size.style.color = 'red';
        overLimit = true;
      } else {
        size.style.color = '';
      }
      if (hoogte >= "100"){ 
        tegrootw = true;
        tegroot = '1';
      }else{
        tegrootw = false;
        tegroot = '2';
      }
      if (breedte >= "200"){ 
            tegrooth = true;
            tegroot = '3';
      }else{
            tegrooth = false;
            tegroot = '4';
      }
      size.innerHTML = htmlSize;
    hoogte.innterHTML = document.getElementById('Image '+j).height;
    breedte.innterHTML = document.getElementById('Image '+j).width;
     
      totalSize += fileSize;
    };//if (fileSize < 0) {
  };//for (j = 1; j <= nfiles; j++)

[ Voor 52% gewijzigd door Freemann op 19-07-2005 00:10 ]

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Het gaat erom dat je eerst de image laat renderen en dan die waardes opvraagt.

Dus pseudo:
code:
1
2
3
4
5
6
7
new Image();
img.src = 'adres.ext';

bla = element.appendChild(img);
bla.(style.)height/width uitlezen

element.removeChild(bla);


//edit: \/ Wou er nog bij commenten of ik dat laatste niet zeker wist, maar ging er al vanuit dat er wel iemand ging reageren die dat wel wist :P

[ Voor 26% gewijzigd door r0bert op 19-07-2005 02:57 ]


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

crisp

Devver

Pixelated

nee, aan het document toevoegen is niet nodig. Wel moet je wachten tot je image geladen is:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var theImage = new Image();
theImage.onerror = imgError;
theImage.onload = imgLoad;
theImage.src = 'http://localhost/pagina_1/images/icon1.gif';

function imgError()
{
    alert('the image could not be loaded';
}

function imgLoad()
{
    alert('width: ' + this.width + ', height: ' + this.height);
}


fileSize is overigens IE-only...

[ Voor 5% gewijzigd door crisp op 19-07-2005 00:42 ]

Intentionally left blank


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
en stel dat theimage nu in een functie staat. Hoe wacht je dan netjes in die functie totdat die image geladen is, zodat je evt de afmetingen mee kan posten?

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
hmmm ok ziet er opzich goed uit. Maar hoe pas ik het nu toe :?

Even zitten stoeien maar krijg zo ie zo al geen Alert op me scherm....

Wat de fileSize betreft, dat is idd zo maar geen probleem omdat het in een IE georienteerde omgeving gebruikt gaat worden.

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • André
  • Registratie: Maart 2002
  • Laatst online: 04-05 16:01

André

Analytics dude

Vinzzz schreef op dinsdag 19 juli 2005 @ 07:46:
en stel dat theimage nu in een functie staat. Hoe wacht je dan netjes in die functie totdat die image geladen is, zodat je evt de afmetingen mee kan posten?
Je kunt niet wachten in een functie ;) Je kunt net als in het voorbeeld hierboven gewoon een functie aan de onload hangen die getriggerg wordt zodra het plaatje geladen is.

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
ok ondertussen heb ik hem aan de gang!
IE gaf geen foutmelding maar Firefox wel. Het zat hem erin dat de eerste alert niet goed was afgesloten met een ")". MAAR nu zit ik nog met een probleem:
Hij wil ze niet laden vanaf een lokale omgeving. Dit is juist wat ik wil omdat ik de afbeeldingen wil valideren voordat ze worden geupload. Dit bezoeker dient met een <input type="file"> de afbeelding selecteerd in zijn lokale omgeving. Na deze selectie wil ik met een "onchange" de waardes weergeven achter de input. Zo kan de gebruiker duidelijk zien wat hij heeft staan(size,height,width).

Iemand nog een suggestie hoe ik nu dus de lokale image kan valideren en hoe ik deze gegevens op het scherm kan tonen.

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl

Pagina: 1