visualizzare immagine con le librerie GD

ciao!sto usando per la prima volta le llibrerie GD

ho una pagina con questo codice che dovrebbe farmi visualizzare un'immagine ma mi da una pagina bianca senza nessun tipo di errore, inoltre se faccio

phpinfo();

mi da tutte le informazioni anche gd enabled

ma se faccio

gd_info();

niente: pagina bianca, questo è il codice:

// Load open
$image = open_image('logo_ALBEROBC3.jpg');
if ($image === false) { die ('Unable to open image'); }

// ... Do some manipulation here ...

// Send header
header ('Content-Type: image/jpeg');

// Display image
imagejpeg($image);

function open_image ($file) {
        // ... edited for brevity
}

sapete dirmi perchè non funziona? l'immagine si trova sulla stessa directory della pagina php

inviato 9 anni fa
cyb
cyb
1
X 0 X

Attiva la visualizzazione e il reporting degli errori nel php.ini

Altrimenti puoi farlo direttamente nel codice tramite

error_reporting(E_ALL);
ini_set('display_errors', true);

ma non ti farà vedere i PARSE_ERROR.

Oppure puoi tenere sott'occhio il log di php. In questo modo vedi subito cosa non funziona. ;-)

risposto 9 anni fa
GaretJax
modificato 9 anni fa
X 0 X

grazie garetjax, mi hai dato un'informazione preziosa ho aggiunto quelle 2 righe e ora mi da:

Warningimagejpeg(): supplied argument is not a valid Image resource in  on line 18

che sarebbe:

imagejpeg($image);

perchè non va questa riga secondo voi??

risposto 9 anni fa
cyb
cyb
1
X 0 X

posta il resto del codice che sta prima.

Vuol dire che il contenuto della variabile $image non è un'immagine generata da una funzione GD

risposto 9 anni fa
GaretJax
X 0 X

scusate il doppio post, copia direttamente il contenuto della funzione open_image (e se al suo interno ci sono delle @ prova a toglierle e vedere se da altri errori).

risposto 9 anni fa
GaretJax
X 0 X

il codice è proprio questo è una prova che sto facendo.

<?php 


error_reporting(E_ALL);
ini_set('display_errors', true);

// Load open
$image = open_image('logo_ALBEROBC3.jpg');
if ($image === false) { die ('Unable to open image'); }

// ... Do some manipulation here ...

// Send header
header ('Content-Type: image/jpeg');

// Display image
imagejpeg($image);

function open_image ($file) {
        // ... edited for brevity
}
?>

come dovrei modificarlo??

risposto 9 anni fa
cyb
cyb
1
X 0 X
...post, copia (ergo: posta) direttamente il contenuto della funzione open_image (e se al suo interno ci sono ...

 :bye:

risposto 9 anni fa
GaretJax
X 0 X

questa è la funzione:

function open_image ($file) {
        # JPEG:
        $im = @imagecreatefromjpeg($file);
        if ($im !== false) { return $im; }

        # GIF:
        $im = @imagecreatefromgif($file);
        if ($im !== false) { return $im; }

        # PNG:
        $im = @imagecreatefrompng($file);
        if ($im !== false) { return $im; }

        # GD File:
        $im = @imagecreatefromgd($file);
        if ($im !== false) { return $im; }

        # GD2 File:
        $im = @imagecreatefromgd2($file);
        if ($im !== false) { return $im; }

        # WBMP:
        $im = @imagecreatefromwbmp($file);
        if ($im !== false) { return $im; }

        # XBM:
        $im = @imagecreatefromxbm($file);
        if ($im !== false) { return $im; }

        # XPM:
        $im = @imagecreatefromxpm($file);
        if ($im !== false) { return $im; }

        # Try and load from string:
        $im = @imagecreatefromstring(file_get_contents($file));
        if ($im !== false) { return $im; }

        return false;
}

poi ho provato a fare anche l'upload di un immagine mi dice l'upload è riuscito ma non mi carica sul server proprio niente eppure il permesso di scrittura sulla cartella c'è!!!

risposto 9 anni fa
cyb
cyb
1
X 0 X

ok... cambia tutti i !== in !=

!== fa il confronto anche sul tipo delle variabili e le funzioni GD in caso di fallimento restituiscono una stringa vuota e non false... questo significa che ti verrà ritornato sempre il risultato di $im = @imagecreatefromjpeg($file); indipendentemente dal risultato.

 :bye:

P.S. Comunque quella funzione è orrenda... :D

risposto 9 anni fa
GaretJax
X 0 X

grazie ma quest'immagine continuo a non vederla!! come lo devo modificare questo codice per vedere l'immagine!! o dove deve stare l'immagine per poterla vedere??

<?php 

error_reporting(E_ALL);
ini_set('display_errors', true);

// Load open
$image = open_image('business4.jpg');
if ($image === false) { die ('Unable to open image'); }

// ... Do some manipulation here ...

// Send header
header ('Content-Type: image/jpeg');

// Display image
imagejpeg($image);

function open_image ($file) {
        # JPEG:
        $im = @imagecreatefromjpeg($file);
        if ($im != false) { return $im; }

        # GIF:
        $im = @imagecreatefromgif($file);
        if ($im != false) { return $im; }

        # PNG:
        $im = @imagecreatefrompng($file);
        if ($im != false) { return $im; }

        # GD File:
        $im = @imagecreatefromgd($file);
        if ($im != false) { return $im; }

        # GD2 File:
        $im = @imagecreatefromgd2($file);
        if ($im != false) { return $im; }

        # WBMP:
        $im = @imagecreatefromwbmp($file);
        if ($im != false) { return $im; }

        # XBM:
        $im = @imagecreatefromxbm($file);
        if ($im != false) { return $im; }

        # XPM:
        $im = @imagecreatefromxpm($file);
        if ($im != false) { return $im; }

        # Try and load from string:
        $im = @imagecreatefromstring(file_get_contents($file));
        if ($im != false) { return $im; }

        return false;
}
?>
risposto 9 anni fa
cyb
cyb
1
X 0 X

mooolto strano... l'ho provato in locale da me...

la causa è che il file dell'immagine non esiste o non è leggibile dal web server.

Questo causa che lo script prova ad aprire l'immagine con tutte le funzioni fino a giungere alla penultima: imagecreatefromxbm che non so perchè la mia versione di php (5.2.0) mi dice che non esiste... probabilmente è così anche per te, prova a togliere la @ da "@imagecreatefromxbm" e vedi se ti esce un bel fatal error...

Il perchè non ci sia non lo so, sul manuale non dice niente

risposto 9 anni fa
GaretJax
X 0 X

grazie dell'attenzione! ma non riesco a vedere alcuna immagine e non mi da errore nemmeno se tolgo la @ se ti viene qualche idea per fare visualizzare quest'immagine ti ringrazio

(non mi funziona nemmeno così:)

<?php

error_reporting(E_ALL);
ini_set('display_errors', true);

// Load open
$image = open_image('foto/business4.jpg');
if ($image === false) { die ('Unable to open image'); }

// ... Do some manipulation here ...

// Display image
imagejpeg($image, 'my_image.jpg');

function open_image ($file) {
        # JPEG:
        $im = @imagecreatefromjpeg($file);
        if ($im != false) { return $im; }

        # GIF:
        $im = @imagecreatefromgif($file);
        if ($im != false) { return $im; }

        # PNG:
        $im = @imagecreatefrompng($file);
        if ($im != false) { return $im; }

        # GD File:
        $im = @imagecreatefromgd($file);
        if ($im != false) { return $im; }

        # GD2 File:
        $im = @imagecreatefromgd2($file);
        if ($im != false) { return $im; }

        # WBMP:
        $im = @imagecreatefromwbmp($file);
        if ($im != false) { return $im; }

        # XBM:
        $im = @imagecreatefromxbm($file);
        if ($im != false) { return $im; }

        # XPM:
        $im = imagecreatefromxpm($file);
        if ($im != false) { return $im; }

        # Try and load from string:
        $im = @imagecreatefromstring(file_get_contents($file));
        if ($im != false) { return $im; }

        return false;
}

?>
risposto 9 anni fa
cyb
cyb
1
X 0 X

dimenticavo... dovresti settare il display degli errori e l'error_level direttamente nel php.ini, se non puoi (hosting condiviso, ecc) prova a commentare le due linee che seguono il commento #XPM

risposto 9 anni fa
GaretJax
X 0 X

grazie! buona pasqua!!

cyb

risposto 9 anni fa
cyb
cyb
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda