tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
932
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    HerbertJ HerbertJ ist offline Mitglied Silber
    Registriert seit
    Oct 2009
    Beiträge
    82
    Guten Abend,

    ich habe einen Script geschrieben der automatisch die Breite und Höhe von einem Bild erkennt und diese ggf. verkleinert, wenn die Größe von 600px überschritten wird.

    Ich habe ein Testbild auf dem Server mit 1024x768px (URL: img/test/1.jpg).
    Wenn ich dieses Bild nun "intern" durch den Script jage funktioniert alles und es wird auf 600×450px skaliert, Beispiel:
    PHP-Code:
    <?php
      $testbild 
    '[img=img/test/1.jpg][/img]';
      echo 
    bbcode($testbild);
    ?>
    ERGEBNIS:
    Code :
    1
    
    <img src="img/test/1.jpg" style="width: 600px; height: 450px;" />

    Sobald ich aber versuche es "extern" einzubinden, klappt der Script nicht mehr. Und das Bild wird nicht skaliert, Beispiel:
    PHP-Code:
    <?php
      $testbild 
    '[img=http://www.mein_domain.de/img/test/1.jpg][/img]';
      echo 
    bbcode($testbild);
    ?>
    ERGEBNIS:
    Code :
    1
    
    <img src="http://www.mein_domain.de/img/test/1.jpg" style=width: px; height: px;" />
    Wie zu sehen ist werden keine Breiten- und Längenangaben ermittelt, warum?



    FUNKTIONEN / SCRIPT
    PHP-Code:
    function bbcode($input) {  
      
    $input preg_replace_callback("/\[img=(.*)\]\[\/img\]/Usi"'bbcode_check_image'$input);

      return 
    $input;
    }



    function 
    bbcode_check_image($input) {
      
    $imageurl   $input[1];
      
    $imagearray getimagesize($imageurl);

      
    $max_image_width    '600';
      
    $max_image_height   '600';

      
    $image_width    $imagearray[0];
      
    $image_height   $imagearray[1];

      if(
    $image_width $max_image_width) {
        
    $image_width  $max_image_width;
        
    $image_height round($imagearray[1]/($imagearray[0]/$image_width));
      }

      if(
    $image_height $max_image_height) {
        
    $image_height $max_image_height;
        
    $image_width  round($imagearray[0]/($imagearray[1]/$image_height));
      }

      return 
    '<img src="'.$imageurl.'" style="width: '.$image_width.'px; height: '.$image_height.'px";" />';

     

  2. #2
    Avatar von thehacker
    thehacker thehacker ist offline Anhänger der Apachen
    Registriert seit
    May 2011
    Ort
    Im Land der Apachen
    Beiträge
    237
    Ich kann dir nicht sagen warum aber ich habe da eine idee...
    warum begrenzt du die Bilder von externen seiten nicht einfach auf z.b. 300x300 PX?
     
    Ein DANKE wäre net wenn der Beitrag geholfen hatt.

    Wieder da:
    Alenan

  3. #3
    HerbertJ HerbertJ ist offline Mitglied Silber
    Registriert seit
    Oct 2009
    Beiträge
    82
    Du meinst statt 600px auf 300px? Was soll das für einen Unterschied machen?
     

  4. #4
    Avatar von thehacker
    thehacker thehacker ist offline Anhänger der Apachen
    Registriert seit
    May 2011
    Ort
    Im Land der Apachen
    Beiträge
    237
    Es wird nicht aus dem Bild ausgelesen sondern du hast es immer Fest. Du musst nicht erst Rechnen und .......
    Also ich fände es einfacher die Größe vor zu definiren wenn es Kleiner sein sollte lass es vom Benutzer einstellen da wenn du ein 50x50 bild um das 5 Fache vergrößerst kann es kommisch aussehen oder ne andere idee,
    du Lädst die Bilder in ein Verzeichniss von dir (Copyright technisch schlecht)

    edit: Nein so meinte ich es nicht du sollst es nur vor Definiren
    Geändert von sheel (10.11.11 um 21:55 Uhr) Grund: Doppel
     
    Ein DANKE wäre net wenn der Beitrag geholfen hatt.

    Wieder da:
    Alenan

  5. #5
    HerbertJ HerbertJ ist offline Mitglied Silber
    Registriert seit
    Oct 2009
    Beiträge
    82
    Ich möchte die Größe aber nicht fest definieren. Sondern nur Bilder verkleinern die größer als 600 px sind. Denn ein 50 px auf 300 px zu vergrößern siehst unter umständen ziemlich unscharf aus.

    Meine Frage bezieht sich eigentlich hauptsächlich darauf, wieso es mit externen Bilder nicht funktioniert? Habe ich einen Fehler im Script? Muss ich irgendetwas spezielles hinzufügen?
     

  6. #6
    Avatar von thehacker
    thehacker thehacker ist offline Anhänger der Apachen
    Registriert seit
    May 2011
    Ort
    Im Land der Apachen
    Beiträge
    237
    So weit wie ich es weiss muss man dazu was in den Server config einstellen oder? also um etwas mit externen Dateine zu machen
     
    Ein DANKE wäre net wenn der Beitrag geholfen hatt.

    Wieder da:
    Alenan

  7. #7
    HerbertJ HerbertJ ist offline Mitglied Silber
    Registriert seit
    Oct 2009
    Beiträge
    82
    Weiß jemand zufällig was ich in der Config einstellen muss bzw. ob es wirklich an der Config liegt?
     

  8. #8
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Meine Vermutung: allow_fopen_url in der php.ini. Sicher bin ich mir aber nicht. Du könntest versuchen, mal error_reporting() und display_errors zu aktivieren:

    PHP-Code:
    // Schreib mich an den Anfang des Scripts
    error_reporting(E_ALL);
    ini_set('display_errors'1); 
    Eine URL müsste IMHO immer dafür sorgen, das eine Remote-Verbindung aufgebaut werden muss. Das kann bei deaktivierter allow_fopen_url zu Problemen führen.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  9. #9
    HerbertJ HerbertJ ist offline Mitglied Silber
    Registriert seit
    Oct 2009
    Beiträge
    82
    Code :
    1
    
    allow_url_fopen = on

    PHP-Code:
    // Schreib mich an den Anfang des Scripts
    error_reporting(E_ALL);
    ini_set('display_errors'1); 
    Es erscheint keine Meldung. Funktioniert aber immer noch nicht...
    Geändert von HerbertJ (11.11.11 um 07:29 Uhr)
     

  10. #10
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Erweiter mal deine Funktion um ein paar Debugging-Ausgaben:

    Code php:
    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
    
    function bbcode_check_image($input) {
    echo "<pre>";
      $imageurl   = $input[1];
    var_dump($imageurl);
      $imagearray = getimagesize($imageurl);
    var_dump($imagearray);
     
      $max_image_width    = '600';
      $max_image_height   = '600';
     
      $image_width    = $imagearray[0];
      $image_height   = $imagearray[1];
     
    var_dump($image_width);
    var_dump($image_height);
     
      if($image_width > $max_image_width) {
        $image_width  = $max_image_width;
        $image_height = round($imagearray[1]/($imagearray[0]/$image_width));
     
    echo "Scaling width<br/>";
    var_dump($image_width);
    var_dump($image_height);
      }
     
      if($image_height > $max_image_height) {
        $image_height = $max_image_height;
        $image_width  = round($imagearray[0]/($imagearray[1]/$image_height));
     
    echo "Scaling height<br/>";
    var_dump($image_width);
    var_dump($image_height);
      }
    echo "</pre>";
     
      return '<img src="'.$imageurl.'" style="width: '.$image_width.'px; height: '.$image_height.'px";" />';
    }
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  11. #11
    HerbertJ HerbertJ ist offline Mitglied Silber
    Registriert seit
    Oct 2009
    Beiträge
    82
    Debugging-Ausgaben:
    Code :
    1
    2
    3
    4
    
    string(40) "http://www.mein_domain.de/img/test/1.jpg"
    bool(false)
    NULL
    NULL

    Ich werde das Gefühl nicht los, dass irgendetwas an der PHP Config Datei nicht passt. Gibt es noch einen Wert den ich überprüfen sollte? Das Interessante ist nämlich, dass ich diesen Script schon des öfteren eingesetzt habe und immer funktioniert hat. Nur auf dem aktuellen Server irgendwie nicht...
    Geändert von HerbertJ (11.11.11 um 11:19 Uhr)
     

  12. #12
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Hast du das Bild (also die komplette URL) mal im Browser geöffnet und auch tatsächlich ein Bild bekommen?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  13. #13
    HerbertJ HerbertJ ist offline Mitglied Silber
    Registriert seit
    Oct 2009
    Beiträge
    82
    Ja, es wird ein Bild angezeigt.

    Wenn ich die URL ohne http://... eingebe funktioniert das skalieren wunderbar, nur wenn http://... dabei steht wird es in Originalgröße angezeigt. Und das obwohl das Bild bei beiden Varianten, zu Testzwecken, auf meinem Server liegt.
     

  14. #14
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Steht evtl. was den Webserver-Logfiles?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  15. #15
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Hallo!

    Zitat Zitat von HerbertJ Beitrag anzeigen
    Code :
    1
    
    allow_url_fopen = on
    Wo hast Du diese Zeile her?
    Sieht mir ganz nach php.ini aus.
    Dann würde ich mal kontrollieren dass Du auch die richtige php.ini erwischt hast.
    phpinfo() sagt Dir welche php.ini die richtige ist..... und nennt Dir auch gleich dessen Einstellungen.

    Zitat Zitat von HerbertJ Beitrag anzeigen
    PHP-Code:
    // Schreib mich an den Anfang des Scripts
    error_reporting(E_ALL);
    ini_set('display_errors'1); 
    Es erscheint keine Meldung. Funktioniert aber immer noch nicht...
    Kannst Du denn sicherstellen dass ini_set() und error_reporting() z.b. nicht unter "disable_funktions =" in der php.ini eingetragen sind?

    Zitat Zitat von HerbertJ Beitrag anzeigen
    bool(false)[/CODE]
    Ja, sowas gibt var_dump() für getimagesize() aus wenn allow_fopen_url deaktiviert ist oder die Datei nicht gefunden wurde.
    Da Du aber sagst dass die Datei existiert und sich auch aufrufen lässt, bleibt ja nurnoch übrig dass allow_fopen_url deaktiviert ist.

    Versuche mal einen Gegentest (inkl. der genannten URL):
    PHP-Code:
    $imageurl "http://static.php.net/www.php.net/images/php.gif";
    //$image_array = getimagesize($imageurl);
    $image_array fopen($imageurl"r");
    var_dump($image_array); 
    Wenn Du wieder ein bool(false) bekommst, ist die Sache klar.
    Wenn Du ein "resource(2) of type (stream)" bekommst, dann nimm den Code nochmal für getimagesize().
    Dann solltest Du dieses zurückbekommen:
    Code :
    1
    
    array(7) { [0]=> int(120) [1]=> int(67) [2]=> int(1) [3]=> string(23) "width="120" height="67"" ["bits"]=> int(7) ["channels"]=> int(3) ["mime"]=> string(9) "image/gif" }

    Gruss Dr Dau
    HerbertJ bedankt sich. 
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

Ähnliche Themen

  1. Preloader für Slideshow mit externen Bildern
    Von sexmagic im Forum Flash Plattform
    Antworten: 7
    Letzter Beitrag: 11.04.07, 17:33
  2. getimagesize() x & y problem
    Von ciberjoerg im Forum PHP
    Antworten: 6
    Letzter Beitrag: 07.03.07, 22:34
  3. getimagesize - Problem
    Von Prophet05 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 22.05.05, 11:18
  4. getimagesize Problem
    Von Bencher im Forum PHP
    Antworten: 4
    Letzter Beitrag: 11.09.03, 14:00
  5. getimagesize() problem
    Von redback79 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 17.04.02, 12:49