Original-Bild in diverse Grössen Resizen

Ob GD_lib installiert oder nicht, kann man sich ja über phpinfo() darüber informieren.
Ich finde diese Datei nirgends, oder wie/wo muss ich Sie Aufrufen?! :(

Wie wird denn das Bild ausgegeben ?
Mit imageview.php oder wallpaperview.php - mit IMG oder A HREF ?
Die Ausgabe des Bildes erfolgt folgendermassen:
Code:
href="/wallpaperview.php?wallpaper=0300000001&size=1280x1024"

Wo werden die Header gesetzt, die ein Bild braucht?
Da muss ich Passen, ich weiss nicht was Du meinst, vielleicht kann Dir "maeTimmae" darauf Antworten...:confused:

Und ich hoffe, dass dein memory_limit groß genug ist, ansonsten stirb der Bearbeitungsprozess ab
Ja, Memory Limit ist unbegrenzt, Festplattenspeicher ist 20GB (erweiterbar), Bandbreite ist 120GB zurzeit Benutzt ca. 32GB (Total der 5 Domainen) und der Traffic ist zurzeit eingestellt auf 50'000MB für thuet.de ist aber ebenfalls Problemlos erweiterbar.
 
Zum Thema phpinfo du machst dir nee Datei namens phpinfo.php (kann auch ander heißen) und schreibst folgendes rein
PHP:
<?
phpinfo();
?>

fertich

mfg Spikaner
 
Ob GD_lib installiert oder nicht, kann man sich ja über phpinfo() darüber informieren.
Code:
GD Support 	enabled
GD Version 	bundled (2.0.28 compatible)
FreeType Support 	enabled
FreeType Linkage 	with freetype
FreeType Version 	2.1.4
GIF Read Support 	enabled
GIF Create Support 	enabled
JPG Support 	enabled
PNG Support 	enabled
WBMP Support 	enabled
XBM Support 	enabled

So weit scheint alles in Ordnung

Leider sehe ich bei deiner Geschichte nicht ganz durch.
Wie wird denn das Bild ausgegeben ?
Mit imageview.php oder wallpaperview.php - mit IMG oder A HREF ?
Im Direktaufruf spielt das eine untergeordnete Rolle - Wenn die gesendete Datenmenge gegen relative 0 Byte (Headerdaten nicht mitgerechnet) laufen, kann was nicht stimmen :/

Wo werden die Header gesetzt, die ein Bild braucht ?
Und ich hoffe, dass dein memory_limit groß genug ist, ansonsten stirb der Bearbeitungsprozess ab.
Mich würde an der Stelle interessieren, welche Headerangaben du als "gebraucht" definieren würdest. Der zu erwartende Mime-Contenttype wird in der render() Methode gesetzt, sofern noch keine Headerdaten unwiderruflich an den Client gesendet wurden. Auch nur in diesem Fall werden die Bilddaten ausgegeben. Eventuell ist das ein Problempunkt, wenn zuvor zB ein Whitespace gesendet wird.


memory_limit ist auf standardmäßigen 32MB - Ist zwar nicht zu großzügig, sollte aber erstmal reichen. Der temporär beanspruchte Speicher wird relativ schnell von PHP wieder freigegeben (nicht reell gesehen, aber innerhalb der PHP-Konfiguration).
 
Du "maeTimmae" trotz den gewünschten Änderungen/Anpassungen hat sich nichts geändert, leider... :(
Nach wie vor wird eine leere Seite geöffnet in der Testseite auf 1280x1024 klicken... :suspekt:
Wäre sehr dankbar wenn Du mir weiterhelfen könntest... :)

Ich danke Dir dafür!
Info: Ich bin leider ab Mittwoch bis und mit Donnerstag abwesend.
 
Was ich mir eventuell vorstellen könnte, wäre eine Ausgabe vor dem Aufruf der render-Methode.

Zuerst ersetzt du testweise bitte die wallpaperview.php durch
PHP:
<?php 

ini_set('error_reporting', 'on');
error_reporting(E_ALL);

header('Content-Type: text/plain');

if (empty($_GET['wallpaper']) OR !ctype_digit($_GET['wallpaper'])) { 
    die('Ungültige Bilddatei!'); 
} 

print("\$_GET['wallpaper']: ");
var_dump($_GET['wallpaper']);

$path = realpath(dirname(__FILE__) . "/wallpapers/{$_GET['wallpaper']}.jpg");
print("\n\$path: ");
var_dump($path);
print("\nis readable: ");
var_dump(is_readable($path);

$image = new Image($path);

$size = (!empty($_GET['size'])) ? $_GET['size'] : null;
print("\n\$size: ");
var_dump($size);

switch ($size) { 
    case 'thumbnail': 
        $image->resizeCanvas(150, 96, 'fit'); 
        break; 

    default: 
    case 'preview': 
        $image->resizeCanvas(500, 375, 'fit'); 
        break; 

    case '800': 
    case '800x600': 
        $image->resizeCanvas(800, 600, 'fit'); 
        break; 

    case '1024': 
    case '1024x768': 
        $image->resizeCanvas(1024, 768, 'fit'); 
        break; 

    case '1280_2': 
    case '1280x800': 
        $image->resizeCanvas(1280, 800, 'fit'); 
        break; 

    case '1280_1': 
    case '1280x960': 
        $image->resizeCanvas(1280, 960, 'fit'); 
        break; 

    case '1280': 
    case '1280x1024': 
        $image->resizeCanvas(1280, 1024, 'fit'); 
        break; 

    case '1600': 
    case '1600x1200': 
        $image->resizeCanvas(1600, 1200, 'fit'); 
        break; 

    case '1920': 
    case '1920x1200': 
        $image->resizeCanvas(1920, 1200, 'fit'); 
        break; 
} 
$image->setRenderQuality(90);

print("\n\$image object: ");
var_dump($image);
$image->render('jpeg');
print("\npostcheck");
Und kopierst die vollständige Ausgabe hier hinein.

Wenn "postcheck" ausgegeben wird, ersetzt du die Datei nochmals, diesmal mit
PHP:
<?php 

ini_set('error_reporting', 'on');
error_reporting(E_ALL);

if (empty($_GET['wallpaper']) OR !ctype_digit($_GET['wallpaper'])) { 
    die('Ungültige Bilddatei!'); 
} 
$path = realpath(dirname(__FILE__) . "/wallpapers/{$_GET['wallpaper']}.jpg");

$image = new Image($path); 

$size = (!empty($_GET['size'])) ? $_GET['size'] : null; 
switch ($size) { 
    case 'thumbnail': 
        $image->resizeCanvas(150, 96, 'fit'); 
        break; 

    default: 
    case 'preview': 
        $image->resizeCanvas(500, 375, 'fit'); 
        break; 

    case '800': 
    case '800x600': 
        $image->resizeCanvas(800, 600, 'fit'); 
        break; 

    case '1024': 
    case '1024x768': 
        $image->resizeCanvas(1024, 768, 'fit'); 
        break; 

    case '1280_2': 
    case '1280x800': 
        $image->resizeCanvas(1280, 800, 'fit'); 
        break; 

    case '1280_1': 
    case '1280x960': 
        $image->resizeCanvas(1280, 960, 'fit'); 
        break; 

    case '1280': 
    case '1280x1024': 
        $image->resizeCanvas(1280, 1024, 'fit'); 
        break; 

    case '1600': 
    case '1600x1200': 
        $image->resizeCanvas(1600, 1200, 'fit'); 
        break; 

    case '1920': 
    case '1920x1200': 
        $image->resizeCanvas(1920, 1200, 'fit'); 
        break; 
} 
$image->setRenderQuality(90);
var_dump(headers_sent());
var_dump(headers_list());
print("\nheader information sent");
$image->render('jpeg');

und gibst bitte wieder die Ausgabe an. Damit könnte ich dann eventuell schon eher einen Fehler ermitteln, denn in einem Testlauf auf meinem lokalen Server funktionierte alles problemlos.
 
Zuerst ersetzt du testweise bitte die wallpaperview.php durch (hier war Dein erster PHP-Code) und kopierst die vollständige Ausgabe hier hinein.
Ich habe die wallpaperview.php mit dem ersten PHP-Code ersetzt, Online gestellt und den Link aufgerufen, es kam wieder eine weisse Seite, somit weiss ich nicht was ich Dir hier vollständig hinein Kopieren soll? :(

Nun, habe ich dann die "wallpaperview.php mit Deinem zweiten oben geschriebenen PHP-Code ersetzt und hochgeladen und leider auch da wieder nur eine weisse Seite.

Könnte es evtl. daran liegen das mein Bildname zu lange ist? (0300000001.jpg) Dieser liegt im Hauptverzeichniss im Ordner "wallpapers".

Ich habe aus allen hergestellten Dateien einen Zip gemacht vielleicht findest Du den Fehler besser/einfacher so? (Download)
 
Irgendwie ist nicht meine Woche :rolleyes: Einzig großartiges Problem: Wir haben keine Klassen, die wir instanzieren können :rolleyes: ²

Also was tun? die originale wallpaperview.php nehmen und oberhalb aller anderer Codes (außer der Error-Reporting Settings) folgende Zeilen einfügen:
PHP:
<?php
define('THIS_DIR', realpath(dirname(__FILE__)) . '/');

require_once(THIS_DIR . 'library/class.image.php');
require_once(THIS_DIR . 'library/class.validate.php');

Und ich geh mir derweile mal nen bisschen Ruhe gönnen. So nen dummer Fehler ist mir echt lange nicht mehr passiert. Sorry für alle Sorgen und Probleme deswegen.
 
Irgendwie ist nicht meine Woche :rolleyes: Einzig großartiges Problem: Wir haben keine Klassen, die wir instanzieren können :rolleyes: ²

Also was tun? die originale wallpaperview.php nehmen und oberhalb aller anderer Codes (außer der Error-Reporting Settings) folgende Zeilen einfügen:
PHP:
<?php
define('THIS_DIR', realpath(dirname(__FILE__)) . '/');

require_once(THIS_DIR . 'library/class.image.php');
require_once(THIS_DIR . 'library/class.validate.php');

Muss ich diesen neuen Code einfach zuoberst in den zwei php Dateien einfügen die im Ordner "library" liegen... oder wie meinst Du oberhalb ALLER Codes? Sorry ich bin echt verunsichert... :(
 
Das kommt alles in die imageview.php oder wallpaperview.php oder wie auch immer - jedenfalls in die Datei, über die die Bilder ausgegeben werden. Der Vollständigkeit halber:

PHP:
<?php 

ini_set('error_reporting', 'on');
error_reporting(E_ALL);

define('THIS_DIR', realpath(dirname(__FILE__)) . '/');

require_once(THIS_DIR . 'library/class.image.php');
require_once(THIS_DIR . 'library/class.validate.php');

if (empty($_GET['wallpaper']) OR !ctype_digit($_GET['wallpaper'])) { 
    die('Ungültige Bilddatei!'); 
} 
$path = realpath(dirname(__FILE__) . "/wallpapers/{$_GET['wallpaper']}.jpg");

$image = new Image($path); 

$size = (!empty($_GET['size'])) ? $_GET['size'] : null; 
switch ($size) { 
    case 'thumbnail': 
        $image->resizeCanvas(150, 96, 'fit'); 
        break; 

    default: 
    case 'preview': 
        $image->resizeCanvas(500, 375, 'fit'); 
        break; 

    case '800': 
    case '800x600': 
        $image->resizeCanvas(800, 600, 'fit'); 
        break; 

    case '1024': 
    case '1024x768': 
        $image->resizeCanvas(1024, 768, 'fit'); 
        break; 

    case '1280_2': 
    case '1280x800': 
        $image->resizeCanvas(1280, 800, 'fit'); 
        break; 

    case '1280_1': 
    case '1280x960': 
        $image->resizeCanvas(1280, 960, 'fit'); 
        break; 

    case '1280': 
    case '1280x1024': 
        $image->resizeCanvas(1280, 1024, 'fit'); 
        break; 

    case '1600': 
    case '1600x1200': 
        $image->resizeCanvas(1600, 1200, 'fit'); 
        break; 

    case '1920': 
    case '1920x1200': 
        $image->resizeCanvas(1920, 1200, 'fit'); 
        break; 
} 
$image->setRenderQuality(90); 
$image->render('jpeg');
 
Zurück