+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Bildgröße ermitteln

  1. #1
    TP-Newbie das_chappi macht alles soweit korrekt
    Registriert seit
    Jan 2006
    Beiträge
    2

    Bildgröße ermitteln

    Hallihallo!

    Ich bin nicht sonderlich bewandert in Sachen JavaScript und stehe nun schon seit einiger Zeit vor folgendem Problem:
    Auf meiner Webseite sollen beim Klick auf Thumbnails die entsprechenden Originalbilder in jeweils passend großen Popups geöffnet werden. Da die Originalbilder aber alle unterschiedlich groß sind und auch verschiedene Seitenverhältnisse haben, wäre es schon, wenn das script zum Öffnen des Popups vorher auch selbstständig die Bildgröße ermitteln könnte, um die Popupgröße an diese anzupassen.

    Soweit ich herausgefunden habe, lässt sich das über diesen Ansatz realisieren:

    function oeffnen(datei) {
    var bild = new Image();
    bild.src = datei;

    ...und dann im window.open die Maße per bild.width und bild.height angeben.

    Das funktioniert soweit auch, allerdings immer erst beim zweiten Klick auf einen Thumbnail. Beim ersten Klick wird das Bild in einem beliebig großen Fenster geöffnet - bild.width und bild.height sind zu diesem Zeitpunkt gleich Null.
    Ich vermute zwar, der Fehler wird dadurch verursacht, dass die Bildgröße schon ermittelt wird, bevor das Bild überhaupt geladen wurde, habe allerdings keine Ahnung, wie man das umgeht. Kann mir hier vielleicht jemand helfen?

    Viele Grüße,
    Elisa

  2. #2
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  3. #3
    TP-Moderator Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Avatar von Malleus
    Registriert seit
    Aug 2004
    Ort
    Homburg / Saarland
    Beiträge
    711
    Hi, ich hab' vor kurzem etwas ähnliches programmiert und denke mal, daß es Dir helfen wird.

    GetHeightWidthOnLoad

    Code:
    <html>
    <head>
    <title>Malleus' Image-Loading Test mit "onload"</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function doIt()
    {
    var newImage = new Image();
    newImage.onload = function ()
    {
    getHeightWidth( this )
    };
    
    newImage.src = "http://www.javascript-spielereien.de/miscs/movezoom/Gretel02.jpg";
    
    getHeightWidth( newImage );
    }
    
    function getHeightWidth( newImage )
    {
    if (newImage.alreadyLoaded || newImage.width == 0)
    	return true;
    breite = newImage.width;
    hoehe = newImage.height;
    newImage.alreadyLoaded = true;
    alert(breite + ":" + hoehe);
    document.getElementById( "myDiv" ).appendChild( newImage );
    
    }
    
    
    //-->
    </script>
    </head>
    <body>
    <input type="button" value="Lade Bild mit dem Onload-Event" onclick="doIt()"/>
    <div id="myDiv"></div>
    </body>
    </html>
    Erklärung: Du "mußt" einen onload-Handler schreiben, der nach dem Laden des Bildes automatisch aufgerufen wird. Erst zu diesem Zeitpunkt hast Du Höhe und Breite. Da das Setzen der "SRC" asynchron abläuft, also die Programmausführung direkt weiterläuft, ist Höhe und Breite "meistens" 0.

    Das Onload feuert aber bei manchen Browers nicht immer (Cache). Aus diesem Grund rufe ich diese Funktion nochmal manuell auf und überprüfe, ob Höhe und Breite ungleich "0" sind. Wenn ja, setze ich ein Flag, das dann später von "richtigen" Onload-handler überprüft wird.

    Okay?

    Wenn nicht, einfach nachfragen

    tschau

    Frank

  4. #4
    TP-Newbie das_chappi macht alles soweit korrekt
    Registriert seit
    Jan 2006
    Beiträge
    2
    Hmm, also ich bin mir ziemlich sicher, dass ich sowas nicht hätte selber schreiben können...
    Habe mein script jetzt jedenfalls entsprechend geändert und nun funktioniert alles bestens. Vielen Dank also!

    Achja, und nebenbei bemerkt - coole Katze ;-)

  5. #5
    TP-Moderator Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Avatar von Malleus
    Registriert seit
    Aug 2004
    Ort
    Homburg / Saarland
    Beiträge
    711
    Freut mich, daß es funktioniert hat und wie gesagt, wenn Dir etwas unklar ist, einfach nachfragen!

    Tschau

    Frank

  6. #6
    TP-Member MadCat macht alles soweit korrekt
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    53
    Hallo,

    ich würde hier gern noch einmal nachhaken:

    Ich habe 3 Bildgalerien, die jeweils per open window angesteuert werden, allerdings läuft dann die Galerie im Fenster als Flashfilm (Slideshow).
    Unter dem Movie habe ich einen Hyperlink auf die nächste Galerie gemacht, so dass der User nicht immer das Fenster schliessen und die nächste Galerie neu öffnen muss.
    Jetzt legt aber der erste Befehl für open Window die Fenstergrösse fest und wenn man dann auf "next" klickt, bleibt diese so. Da es ein Movie ist variiert die Grösse ebenfalls, nur wie kann ich das in den "next"-link einbauen, so dass sich das bestehen Fenster automatisch vergrössert?

    So wie oben für einzelne Bildgalerien mit jpg´s ?

    Vielen Dank im voraus und Grüsse,
    MadCat
    Ein Problem ist eine Lösung im Arbeitskittel!

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

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