Avatar billede jakobdo Ekspert
09. marts 2011 - 14:35 Der er 15 kommentarer og
1 løsning

Original størrelse på billede

Hej,
jeg har lavet en side via et powershell script, som lister samtlige billeder af vores ansatte i firmaet.
For at gøre siden overskuelig, har jeg smidt fast højde og bredde på:

<img src="bruger_billede.jpg" style="height:96px;width:96px;" alt="Brugernavn" />

Vil jeg via javascript kunne få udprintet billedets originale størrelse?
Eller skal jeg tilbage til mit powershell og få størrelsen allerede derfra?
Avatar billede danco Nybegynder
09. marts 2011 - 15:40 #1
Umiddelbart ser det ud til at javascript kun kan returnere den højde og bredde som billedet har på siden.
Avatar billede olebole Juniormester
09. marts 2011 - 15:51 #2
<ole>

[div]
var oImg = new Image();
oImg.onload = function(){
    alert(oImg.width+"x"+oImg.height);
}
oImg.src = "sti/til/pic.png";

[div]

/mvh
</bole>
Avatar billede olebole Juniormester
09. marts 2011 - 15:52 #3
Hov  :D


var oImg = new Image();
oImg.onload = function(){
    alert(oImg.width+"x"+oImg.height);
}
oImg.src = "sti/til/pic.png";

Avatar billede danco Nybegynder
09. marts 2011 - 16:25 #4
Og jeg trækker bare min uvidenhed tilbage ;)
Avatar billede olebole Juniormester
09. marts 2011 - 16:56 #5
Hehe ... that's OK, men læg mærke til, at det kan kun lade sig gøre med Image constructor'en. Der findes ikke en onload handler på et img HTMLElement.

Man kunne begynde med at sætte faste størrelser på alle billeder. På onload kunne man så loope igennem billederne og køre koden ovenfor i løkken. Da billedet jo i forvejen er hentet og vist i browseren, henter koden billedet fra cachen og loader det derfor lynhurtigt.
Avatar billede olebole Juniormester
09. marts 2011 - 17:14 #6
- og husk forresten at feje de brugte objekter op  ;o)


window.onload = function() {
    function doResize(o) {
        var oImg = new Image(),
        css = o.style;
        oImg.onload = function(){
            css.width = this.width+"px"
            css.height = this.height+"px";
            oImg = null;
        }
        oImg.src = o.getAttribute("src");
    }
    var a = document.getElementsByTagName("img");
    for (var i=0,j=a.length; i<j; i++) doResize(a[i]);
}

Avatar billede jakobdo Ekspert
09. marts 2011 - 19:51 #7
Løste det på en måde, som minder en del om din olebole.
Har koden på arbejdet, så melder lige min fungerende kode ind. (det er i fy-library jquery)

Men smid du bare et svar, så kan du få pointene.
Avatar billede olebole Juniormester
09. marts 2011 - 21:27 #8
Ja, det er netop den slags, jeg ikke tør bruge jQuery til. Da jeg ikke har fuld styr på bibliotekets indre, kan jeg ikke være sikker på, hvad den f.eks. stiller op med de 'brugte' objekter - eller om der evt. oprettes cirkulære referencer over closures. Den slags volder som bekendt voldsomme udfordringer med IE og dens problematiske garbage collection - og kan netop meget let forekomme i en kontekst som denne.

Jeg overlader ikke mine kreditkort informationer til den ellers nok så søde bagerjomfru, så hun selv kan sørge for, min betaling bliver trukket på kontoen. På samme måde ønsker jeg ikke at overlade sikringen af min kodes kvalitet til tvivlsomme black-boxes ... men det er jo en gammel snak  ;o)

Som du ved, kommer jeg her næsten aldrig, så jeg samler heller ikke points længere ... men tak for tilbudet  =)
Avatar billede jakobdo Ekspert
09. marts 2011 - 21:34 #9
Dette var til en enkelt side, som skulle afvikles en gang.
Så jeg tror nu godt jeg tør overlade kreditkortet til bagerjomfruen denne ene gang. :o)
Avatar billede olebole Juniormester
09. marts 2011 - 21:47 #10
Your choise! Så tror jeg zq, jeg napper bagerjomfruen - og jeg lover, vi nyder såvel belugaen som champagnen ... men kun denne ene gang  *D
Avatar billede jakobdo Ekspert
09. marts 2011 - 21:56 #11
Jeg lukker og slukker her.
Tak for input Olebole og undskyld jeg ikke fik den lukket i tide.
"Problemet" var løst i eftermiddags...
Avatar billede olebole Juniormester
09. marts 2011 - 22:16 #12
No sweat! Jeg hygger mig bare på en lille, fransk genvisit. Under alle omstændigheder hygsomt at høre din stemm ... ehhh ... se dine tegn igen  ;o)
Avatar billede jakobdo Ekspert
09. marts 2011 - 22:25 #13
Hvis du sidder og hygger i det franske, hvad F***** "spilder" du så din tid med her på eksperten.dk? :o)
Det skal vel ikke nydes fra en PC? (regner det?)
Avatar billede olebole Juniormester
09. marts 2011 - 22:46 #14
Så bogstaveligt var det nu ikke med det franske, selvom jeg sagtens kunne se mig selv i selskab med et dusin østers og et køligt glas Chablis på Les Deux Magots i Paris ... mmmmmmmm!

Sidder desværre bare på regnvåde Amager og er på fransk visit på Eksperten. 'Fansk visit' = 'kort besøg'  ;o)
Avatar billede jakobdo Ekspert
09. marts 2011 - 22:52 #15
Jaja, haha. Den fangede jeg jo slet ikke. Måske jeg bare burde gå i seng.
Avatar billede jakobdo Ekspert
10. marts 2011 - 11:10 #16
Jeg endte med at lave det sådan her:

$(window).load(function(){
  $('img').each(function(index){
    var pic = $(this);
    pic.removeAttr("width");
    pic.removeAttr("height");
    pic.removeAttr("style");
    if(pic.width() > 96 || pic.height() > 96){
      $("#result").append($(this).parent().attr("title") + " Width: " + pic.width() + " - Height: " + pic.height() + "<br />")
    }
    $(this).remove();
  });
});

Hvor jeg så simpelthen fjerner billedet og udskriver dem som er for store. :o)

Så jeg kan rive fat i nakken på dem.
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