-
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:
ERGEBNIS:PHP-Code:<?php
$testbild = '[img=img/test/1.jpg][/img]';
echo bbcode($testbild);
?>
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:
ERGEBNIS:PHP-Code:<?php
$testbild = '[img=http://www.mein_domain.de/img/test/1.jpg][/img]';
echo bbcode($testbild);
?>
Wie zu sehen ist werden keine Breiten- und Längenangaben ermittelt, warum?Code :1
<img src="http://www.mein_domain.de/img/test/1.jpg" style=width: px; height: px;" />
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";" />';
}
-
10.11.11 21:32 #2
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?
-
Du meinst statt 600px auf 300px? Was soll das für einen Unterschied machen?
-
10.11.11 21:45 #4
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 DefinirenGeändert von sheel (10.11.11 um 21:55 Uhr) Grund: Doppel
-
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?
-
10.11.11 21:51 #6
So weit wie ich es weiss muss man dazu was in den Server config einstellen oder? also um etwas mit externen Dateine zu machen
-
Weiß jemand zufällig was ich in der Config einstellen muss bzw. ob es wirklich an der Config liegt?
-
10.11.11 22:20 #8
- 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:
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.PHP-Code:// Schreib mich an den Anfang des Scripts
error_reporting(E_ALL);
ini_set('display_errors', 1);
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Code :
1
allow_url_fopen = on
Es erscheint keine Meldung. Funktioniert aber immer noch nicht...PHP-Code:// Schreib mich an den Anfang des Scripts
error_reporting(E_ALL);
ini_set('display_errors', 1);
Geändert von HerbertJ (11.11.11 um 07:29 Uhr)
-
11.11.11 08:59 #10
- 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 ;-)
-
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)
-
11.11.11 11:24 #12
- 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 ;-)
-
-
11.11.11 17:55 #14
- 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 ;-)
-
12.11.11 00:55 #15
Hallo!
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.
Kannst Du denn sicherstellen dass ini_set() und error_reporting() z.b. nicht unter "disable_funktions =" in der php.ini eingetragen sind?
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):
Wenn Du wieder ein bool(false) bekommst, ist die Sache klar.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 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 DauSchri-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
-
Preloader für Slideshow mit externen Bildern
Von sexmagic im Forum Flash PlattformAntworten: 7Letzter Beitrag: 11.04.07, 17:33 -
getimagesize() x & y problem
Von ciberjoerg im Forum PHPAntworten: 6Letzter Beitrag: 07.03.07, 22:34 -
getimagesize - Problem
Von Prophet05 im Forum PHPAntworten: 4Letzter Beitrag: 22.05.05, 11:18 -
getimagesize Problem
Von Bencher im Forum PHPAntworten: 4Letzter Beitrag: 11.09.03, 14:00 -
getimagesize() problem
Von redback79 im Forum PHPAntworten: 2Letzter Beitrag: 17.04.02, 12:49



2Danke

Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren