Ergebnis 1 bis 11 von 11
  1. #1
    Starsoul ist offline Grünschnabel
    registriert
    14-10-2004
    Beiträge
    6

    Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    Hallo zusammen,

    habe ne Diashow gemacht in der via html links die Bilder vor und zurück geklickt werden können. Das Bild passt sich automatisch der maximal verfügbaren Bildschirmauflösung an bis max 100% der original Bildauflösung und das Seitenverhältnis bleibt gleich.

    Es klappt alles bis auf das sich die Bilder nicht der Auflösung anpassen. Wollte hierzu mit dem width und height attribut die Bildabmessungen einlesen aber es geht einfach nicht. Die variable in die dies eingelesen werden soll bleibt immer Null.

    Die Url des Fotos wird mittels eines Arrays eingelesen. Hab versucht ein zweites Array anzulegen um die Bildgröße zu speichern - funktioniert nicht. Am besten wäre es sicherlich kurz vor der Bildausgabe die Bildmaße in variablen einzulesen aber es geht einfach nicht - sorry steh irgendwie auf dem Schlauch.

    Besten Dank im Voraus.

    Gruß

    Starsoul


    anbei der code

    <html>
    <head>

    <script language="JavaScript1.1">
    var photos=new Array()
    var photoslink=new Array()
    var which=0

    photos[0]="g1.jpg"
    photos[1]="g2.jpg"
    photos[2]="g3.jpg"

    var linkoderkeinlink=0

    photoslink[0]=""
    photoslink[1]=""
    photoslink[2]=""
    photoslink[3]=""
    photoslink[4]=""

    var preloadedimages=new Array()
    var bildbreite=new Array()
    for (i=0;i<photos.length;i++)
    {
    preloadedimages[i]=new Image()
    preloadedimages[i].src=photos[i]
    }

    function effektberechnen(){
    if (document.all){
    photolauf.filters.revealTrans.Transition=Math.floor(Math.random()*23)
    photolauf.filters.revealTrans.stop()
    photolauf.filters.revealTrans.apply()
    }
    }

    function effektzeigen(){
    if (document.all)
    photolauf.filters.revealTrans.play()
    }

    function wievielebilder(){
    // window.status="Bild "+(which+1)+" von "+photos.length
    window.status=photos[which]
    }

    function zurueck(){
    if (which>0){
    which--
    document.images.photolauf.src=photos[which]
    wievielebilder()
    }
    }

    function weiter(){
    endepruf ()
    if (which<photos.length-1){
    which++
    document.images.photolauf.src=photos[which]
    wievielebilder()
    }
    }

    function endepruf(){
    if (which==photos.length-1)
    {
    window.close();
    //window.open ("../start.htm","_self");
    }
    }

    function transport(){
    window.location=photoslink[which]
    }
    </script>
    <title>Schreinerei SETTLER - Gesellenstücke</title>
    </head>

    <body bgcolor="#000000" link="#66CCFF" vlink="#66CCFF" alink="#66CCFF">
    <div id="menu" style="position:absolute; right:1px; top:1px;">
    <p align="center">
    <font face="Arial" size="2"><font color="#FFFFFF">||</font> <a href="#" onClick="zurueck();return false"><font color="#66CCFF">zur&uuml;ck</font></a> <a href="#" onClick="weiter();return false;"><font color="#66CCFF">weiter</font></a>
    <font color="#FFFFFF">
    ||<br>
    <br>

    ||</font> <a href="#" onClick="javascript:window.setTimeout ('window.close ()',0);"><font color="#66CCFF">Hauptmenü</font></a>
    <font color="#FFFFFF"> ||</font></font><br>
    <br>
    <img border="3" src="../logo1a.gif" width="100" height="34"><br>
    <font color="#6699FF">&amp;</font><br>
    <font color="#6699FF"><font face="Arial" size="1" color="#6699FF">Gerhard Gundel<br>
    &nbsp;Design (C) 2004</font><br>
    </font>
    </div>


    <script>
    var FensterBreite
    var FensterHoehe

    if (navigator.appName.indexOf('Netscape')!=-1)
    {
    FensterBreite=self.innerWidth;
    FensterHoehe=self.innerHeight;
    }
    else if (navigator.appName.indexOf('Microsoft')!=-1)
    {
    FensterBreite=document.body.clientWidth;
    FensterHoehe=document.body.clientHeight;
    }


    var breite=photos[0]
    //var picweite=breite;
    //var pichoehe=hoehe;

    //if (FensterBreite >= breite && FensterHoehe >= hoehe)
    // {
    // picweite=breite;
    // pichoehe=hoehe;
    // }

    //if (FensterBreite < breite && FensterHoehe >= hoehe)
    // {
    // picweite=FensterBreite;
    // pichoehe=hoehe;
    // }

    //if (Fensterbreite >= breite && FensterHoehe < hoehe)
    // {
    // picweite=breite;
    // pichoehe=FensterHoehe;
    // }


    //breite=(FensterBreite <=breite) ? breite : "100%";


    if (linkoderkeinlink==1)
    document.write('<a href="javascript:transport()">')

    // ** Hier wird das Bild angezeigt

    document.write('<center><img src="'+photos[0]+'" name="photolauf" width="'+breite+'" height="100" style="filter:revealTrans(duration=2,transition=23)" border=0>')
    if (linkoderkeinlink==1)
    document.write('</a>')
    </script>

    </body>

    </html>

  2. #2
    Avatar von Manitou
    Manitou ist offline Lounge-Member
    registriert
    01-06-2001
    Ort
    Winsen/Aller
    Beiträge
    3.206

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    Um die Hoehe und Breite der Bilder rauszubekommen, solltest du mit photos[i].width und photos[i].height arbeiten. Sollte eigentlich funktionieren. Diese Eigenschaften stehen automatisch zur Verfügung sobald das Array mit den Pfaden zu den Bildern gefüllt ist.
    You ask this of me who have contemplated the very vectors of the atoms in the Big Bang itself? Molest me not with this pocket calculator stuff.

    (Deep Thought in Douglas Adams' The Hitch Hiker's Guide to the Galaxy)

  3. #3
    Starsoul ist offline Grünschnabel
    registriert
    14-10-2004
    Beiträge
    6

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    habe schon mit width und height gearbeitet und als allererstes ist mir dies auch eingefallen aber es funktioniert nicht...


    Habe dies im Bodybereich vor dem anzeigen des Fotos eingefügt


    var breite=photos[0].width;


    folgende Fehlermeldung kommt

    photos[...] ist Null oder kein Objekt


    Kann es sein, daß in photos nur dir url drin ist und nicht das eigentlich Bild - somit auch keine Bildgröße?
    Oder kann mir jemand ne alternativ sagen wie ich 30 Bilder einlese und die Größe herbekomme?

    Für weitere Vorschläge wäre ich dankbar

  4. #4
    zehdeh ist offline Routinier
    registriert
    30-09-2002
    Ort
    Stühlingen
    Beiträge
    302

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    hi,
    nur ein Tip:

    "var breite=photos[0]"

    Dann ist der Inhalt der Variablen breite einfach ein String der zufällig auch ein Dateiname ist. Das es sich dabei um ein Bild handelt kann JavaScript ja nicht wissen.
    Drum scheitert auch photos[0].width weil ein String höchstens ein length-Eigenschat hat aber kein width.
    Du mußt dir also ein Image-Objekt besorgen, dann kannst du auch die Eigenschaften width und height setzen.
    Gruß zehdeh.

  5. #5
    Avatar von Manitou
    Manitou ist offline Lounge-Member
    registriert
    01-06-2001
    Ort
    Winsen/Aller
    Beiträge
    3.206

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    Ich glaube, ich bin etwas mit dem erklären aus der Übung gekommen. Natürlich geht das nur mit einem Image-Objekt und nicht mit einem normalen Array-Element.
    You ask this of me who have contemplated the very vectors of the atoms in the Big Bang itself? Molest me not with this pocket calculator stuff.

    (Deep Thought in Douglas Adams' The Hitch Hiker's Guide to the Galaxy)

  6. #6
    Starsoul ist offline Grünschnabel
    registriert
    14-10-2004
    Beiträge
    6

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    shit da habt Ihr Recht, daran hab ich garnicht gedacht ... bin auch net so der javascript Freak

    Wie mach ich mir dann ein Image Objekt?...

    sorry für die dummen Fragen...hoffe Ihr könnt mir noch etwas mit Rat beiseite stehen.

  7. #7
    Avatar von Manitou
    Manitou ist offline Lounge-Member
    registriert
    01-06-2001
    Ort
    Winsen/Aller
    Beiträge
    3.206

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    Ein imageObjekt legst du analog zu new array mit new image an.

    Näheres findest du unter SelfHTML .
    You ask this of me who have contemplated the very vectors of the atoms in the Big Bang itself? Molest me not with this pocket calculator stuff.

    (Deep Thought in Douglas Adams' The Hitch Hiker's Guide to the Galaxy)

  8. #8
    Luz
    Luz ist offline Haudegen
    registriert
    27-09-2003
    Beiträge
    698

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    Leider ist Dein Problem nicht ganz einfach zu lösen.

    Zuerst kommt einmal die Breite und die Höhe in den <script> Bereich im Body (die Bilder hast Du ja bereits vorgeladen):

    var breite=preloadedimages[0].width;
    var hoehe = preloadedimages[0].height;




    Nun gibt es einige Browser, die Dir immer noch unsinnige Werte für die eingelesen Bilder ausgeben. Dies liegt daran, dass die Bilder in einem Hintergrundthread geladen werden, das Skript aber bereits ausgeführt wird. Zum Beispiel sind erst 75% deines Bildes geladen, wenn das Script an dieser Stelle anlangt. Somit erhältst Du auch nur eine 75% Bildhöhe (na ja, in etwa
    Es gibt aber die complete Eigenschaft, mit der Du abfragen kannst, ob ein Bild vollständig geladen wurde:
    Also in den preload Teil:

    var preloadedimages=new Array()
    var bildbreite=new Array()
    for (i=0;i<photos.length;i++)
    {
    preloadedimages[i]=new Image()
    preloadedimages[i].src=photos[i]
    while (preloadedimages[i].complete==false) var tueNichts=0; // Warte, bis geladen...
    //alert (preloadedimages[i].height);
    }

    Somit erkennt mindestens Mozilla die Bildwerte, andere PC Browser kann ich leider nicht testen. Jedenfalls ist der IE für Mac der Meinung, da das Bild nicht sichtbar ist, muss es die Höhe 0 und Breite 1 haben. Falls Dir das egal ist, kannst Du einfach für die andern Browser entwickeln. Ich vermute nun mal, der IE für PC kann das...
    Dein nächstes Problem dürfte nun sein, dass Du ja nur die Bildhöhe des 1. Bildes hast. Bei modernen Browsern kannst Du aber mit preloadimages[i].height die Bildhöhe und Breite auch setzen. Somit dürfte alles klappen (ausser im IE für Mac, wo man halt nichts sieht.


    Ich habe Dein Problem mal gehabt, als ich eine Photo CD erstellen musste, bei welcher die Bilder flexibel einstellbar sein sollten (also 100%. 50% etc.). Die einzige Lösung, welche für alle Browser funktionierte, war ein Frameset: Zuerst das Bild im oberen Frame vorladen, und dann mit onLoad () die Bilddaten ausgelesen und im unteren Frame darstellen. Aber dies ist ein völlig anderer Ansatz; und ich weiss nicht, ob er fürs Web anwendbar ist (wegen der längeren Ladezeiten).
    Falls es Dich interessiert, poste ich Dir sonst mal noch einen Link;

    Die letzte und wohl einfachste Lösung ist, die Photo-Breiten und Höhen einfach manuell in einen Array abzulegen: Ist zwar ein bisschen Zusatzaufwand, dafür kannst Du deine Lösung übernehmen, und es sollte überall funtkionieren:
    pWidth = new Array (100,200,300); // Alle Breiten der Photos angeben
    pHeight = new Array (50,75,50); // Alle Höhen angeben

    und dann in weiter:

    function weiter(){
    endepruf ()
    if (which<photos.length-1){
    which++
    document.images.photolauf.width = pWidth[which]
    document.images.photolauf.width = pHeight[which]
    document.images.photolauf.src=photos[which]
    }
    }

    Ich hoffe, Du kannst eine von diesen Ideen umsetzen (ich würde die letzte empfehlen);
    lg,
    luz
    Geändert von Luz (15-10-2004 um 00:25 Uhr)

  9. #9
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    Die complete eigenschaft ist nicht sinnvoll, für diesen Zweck gibt es den onload Event.

    PHP-Code:

    var img = new Image();

    img.onload fertig;
    img.onerror fehler;
    img.src '...';

    function 
    fertig()
    {
    alert(this.src ' ist fertig!\n' this.width ' x ' this.height
    );
    }

    function 
    fehler()
    {
    alert(this.src ' kann nicht geladen werden');


  10. #10
    Luz
    Luz ist offline Haudegen
    registriert
    27-09-2003
    Beiträge
    698

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    Ich kenne den onload event. Leider funtioniert er nicht in Safari. Und da dieser Browser doch ab und an verwendet wird, musste ich eine andere Lösung suchen (Mittlerweile ist dieses Problem zwar wahrscheinlich behoben worden).
    Warum ist complete nicht sinnvoll?

    lg,
    luz
    Geändert von Luz (15-10-2004 um 12:42 Uhr)

  11. #11
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Aus Bilderarray keine Bildgröße via width einlesbar - HELP

    Weil die eigenschaft von einigen Browsern nicht richtig gesetzt wird (http://de.selfhtml.org/javascript/ob...s.htm#complete).
    außerdem ist das raten ob und wann complete gesetzt wird nicht besonders elegant.

    Und der funktioniert nicht im Safari?
    Ich benutze onload seit Netscape 3 und hab noch keinen Browser gesehen wo er nicht funktioniert. Kann es sein dass dort das Phänomen auftritt, dass wenn die Datei schon im Cache ist onload nicht mehr gefeuert wird? In dem Falle ist es sinnvoll mit onload und complete zu arbeiten.

Ähnliche Themen

  1. Zerschossenes Design
    Von Clausgrm im Forum Allgemeines
    Antworten: 19
    Letzter Beitrag: 26-04-2003, 14:36

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •