Bild verzerrung verhindern?

  • Ich hänge ma wieder an meiner Page.

    Ich habe eine ausgabe von Bilder von aus der DB die angezeigt werden!

    So das Problem ist das wenn der Besucher ein Bild postet was sehr groß ist, muss mann scrollen bei meiner Page.

    Nun möchte ich es so haben das das Bild verkleinert wird auf eine bestimmte höchst breite und länge.
    Aber wenn ich z.b. so mache :
    [code]
    <td></td>
    [code]

    Ist das ganze Bild verzerrt.

    Wie stelle ich es an das das bild verkleiner wird aber nicht verzerrt? Geht das überhaupt?


    Gruß crazywulf :D

  • mit getimagesize($bild) erhälst du einen array. [0] = breite [1] = höhe

    ==> du dividierst in einer while-schleife solang durch einen faktor bis das bild unter eine gewissen grenze ist.

    bsp:
    [php:1:99dada7afd]<?php
    while ($groese[0] > "500") {
    $groese[0] = $groese[0] / 1.2
    $groese[1] = $groese[1] / 1.2
    }

    echo '[/php:1:99dada7afd]

    so lädt er halt trotzdem die volle größe. mit anderen image-befehlen kannst du dann noch die größe in "echt" runtersetzen, aber das setzt vorraus, dass das in php aktiviert ist.

    mfg

  • Ich bin zu doof sowas einzubinden lol

    Parse error: parse error, unexpected T_VARIABLE in D:\PageProgramming\bildb.php on line 23

    was hab ich vergessen zu machen?

  • ojee.... ich weiss ned mehr ob ich nochma in php rein komm

    [php:1:0dfd205d75]
    <?
    $query = mysql_db_query("$dbName", "SELECT * FROM cr_bildb");

    while($fetch = mysql_fetch_array($query)) {
    $bildg = $fetch['bild'];
    $groesse = getimagesize($bildg);
    while ($groese[0] < "500") {
    $groese[0] = $groese[0] / 1.2
    $groese[1] = $groese[1] / 1.2 # Hier kommt der error
    }
    [/php:1:0dfd205d75]

    Parse error: parse error, unexpected T_VARIABLE in D:\PageProgramming\bildb.php on line 25

    Gruß crazywulf :D

  • du kannst die größe des bildes gleich ändern wenn es auf den server bzw. in die db geladen wird.
    schalte die gd2-erweiterung frei. mit der kannst du bilder bearbeiten/erstellen/speicher.

    mfg. alex

  • Beste Loesung: bei dem Upload des Bildes eine maximale Groesse vorschreiben und den User das Bild vorher passend machen lassen
    (am wenigsten Aufwand und Traffic fuer dich).

    Alternative 1: Das Bild mit Hilfe der gdlib in php mit gleichbleibenden Proportionen
    herunterrechnen, direkt beim Hochladen oder beim Abruf aus der Datenbank.

    Alternative 2: Wenn man das Original-Bild in der Original-Groesse nicht
    veraendern will (und z.b. auf Klick in Original-Groesse anzeigen moechte): Das Bild in einem nicht-sichtbaren HTML-Element (div auf hidden) laden,
    per JavaScript die Groesse des Bildes auslesen, per JavaScript die Groesse des Bildes entsprechend anpassen
    und das nicht-sichtbare Element mit dem Bild in der berechneten Groesse auf sichtbar schalten.
    Vorteile: Keine Last durch Umrechnungen auf dem Server (gdlib-operationen sind rechenzeitaufwendig)
    weil das "Scaling" (Aendern der Bildgroesse unter beibehaltung der Proportionen)
    in dem Fall vom Browser des Users durchgefuehrt wird.

    Gruss,
    Gast

  • Zitat von cr@zywulf


    <td></td>


    Ich denke, die einfachste Variante ist, nur ein Größen-Attribut anzugeben, also entweder "width", oder "height". Dann wird das Bild proportional verkleinert, bzw. vergrössert, angezeigt.
    Der Nachteil ist, dass der Platz für das Bild beim Seitenaufbau nicht im Voraus berücksichtigt wird, sondern erst, wenn das Bild geladen ist. Das kann aber u. U. vernachlässigt werden.
    MfG
    6_freddy :)

  • Zitat von 6_freddy

    Der Nachteil ist, dass der Platz für das Bild beim Seitenaufbau nicht im Voraus berücksichtigt wird, sondern erst, wenn das Bild geladen ist. Das kann aber u. U. vernachlässigt werden.

    du kannst auch eine feste breite vorgeben, dann nachschaun um welchen faktor das bild auf diese breite verkleinert werden muss und die höhe dann um den selben faktor verkleinern .... nur eine frage der mathematik.

    mfg

  • Zitat von Rocco

    du kannst auch eine feste breite vorgeben, dann nachschaun um welchen faktor das bild auf diese breite verkleinert werden muss und die höhe dann um den selben faktor verkleinern .... nur eine frage der mathematik.

    mfg

    Hi,
    das versteh' ich jetzt nicht, wie meinst Du das?
    MfG
    6_freddy :?

  • Könntet ihr mir den quellcode schreiben für die Überprüfung des Bildes vor dem Upload ?

    Gruß crazywulf :D

  • ich hätte noch etwas zu der art zu sagen wie du das bild auf die richtige größe bringen willst.
    du solltest das nicht mit einer schelife machen. das könnte ja einige durchgänge dauern wenn du die größe immer durch einen faktor dividierst.

    ich würde die maximale breite von der aktullen breite abziehen und mir daraus dann berechnen um wie viel 'prozent' das bild größer ist.
    jetzt kann ich mir die dazugehörige höhe ausrechnen.
    bsp:

    Code
    $pfaktor = 1 - ($imgwidth - 500) / $imgwidth * 100;
    $newimgwidth = $imgwidth * $pfaktor;
    $newimgheight = $imgheight * $pfaktor;

    mfg. alex

  • Zitat von 6_freddy

    Hi,
    das versteh' ich jetzt nicht, wie meinst Du das?
    MfG
    6_freddy :?

    also alex' möglichkeit ist recht gut.

    ich meinte das so. ein bsp:

    bild mit 500 x 100px, soll aber 200 x X sein (du willst ja dass das bild eine exakte breite hat um in die tabelle zu passen). und dann

    $faktor = 500 / 200 = 2.5
    $bildhöhe-neu = 100 / $faktor

    so hab ich das vorhin gemeint.

  • öhmm und wie und wo muss ich das einbinden ?

    ich hab das irgendwie noch ned richtig verstanden

  • Hi,

    Rocco:
    Danke, jetzt hab' ich's kapiert. Und Alex' Variante find' ich auch gut.

    Aber eigentlich ändert die ganze Rechnerei ja nicht wirklich die Bildgrösse (die Dateigrösse), sondern nur die Darstellungsgrösse auf dem Bildschirm, oder? Und deshalb, denke ich, kann man sich die auch sparen, wenn man mit der oben beschriebenen Einschränkung leben kann.

    MfG
    6_freddy :)

  • Alles ja schön und gut aber wie und wo muss ich das jetzt einsetzen und da fehlt doch ganz bestimmt noch die eine oder andere Zeile

    Gruß crazywulf ;D

  • währe das nicht auch noch ne lösung:

    [php:1:ef470d8694]<?php
    $tmp=getimagesize($file);

    $hoehe=$breite*100/$tmp[0];

    echo '';
    ?>[/php:1:ef470d8694]


    das mach alle bilder auf eine breite von 100 ohne sie zu verziehen.

  • Hab ich ausprobiert nun hab ich ein neues problem siehe hier

    http://meinpc.mine.nu/index.php?seite=bildb

    die Bilder sind jetzt alle kleiner nur ein kleines bild (doppelklick auf das bild ist volle größe) wie mein avatar ist nun RIESIG

    p.s. ganze läuft immo über meinen pc weil ich kein bock hab das ganze zeit neu hochzuladen...also ich nicht über die lammmmheit wundern