View Full Version : [PHP] $this->var question..
Salve,
ho appena iniziato con l'utilizzo delle classi e della libreria gd.
Questo pomeriggio mi sono trovato dinnanzi il seguente problema:
Il $this->variabile non mi funziona...
Mi dice Notice: Undefined property: im in c:\programmi\easyphp1-8\www\img.class.php on line 41
Il mio problema é come fare ad utilizzare la variabile $im nelle altre funzioni?
Potrei passarlo in ogni funzione ma mi pare piuttosto un codice sporco
Il codice della classe é;
potrebbero esserci piccoli errori che per provare forse ho dimenticato di rimettere a posto...
<?php
class img
{
var $errore = array(
"Errore sconosciuto", // 0
"Errore nel caricamento dell immagine" // 1
);
function loadImg($img_percorso, $testo)
{
$im = imagecreatefromjpeg($img_percorso);
$this->insertLogo($im, "logo.png");
$this->insertTesto($testo);
$this->saveImg();
return 1;
}
function insertLogo($im, $logoz="logo.png")
{
$watermark = imagecreatefrompng($logoz);
$waterm_w = imagesx($watermark);
$waterm_h = imagesy($watermark);
imagecopymerge($im, $watermark, 0, 0, 0, 0, $waterm_w, $waterm_h, 100);
}
function insertTesto($testo)
{
$colore['bianco'] = imagecolorallocate($im, 255, 255, 255);
$colore['blu'] = imagecolorallocate($im, 0, 0, 255);
$colore['rosso'] = imagecolorallocate($im, 255, 0, 0);
$colore['verde'] = imagecolorallocate($im, 0, 255, 0);
$colore['nero'] = imagecolorallocate($im, 0, 0, 0);
$width = imagesx($this->im);
$height = imagesy($this->im);
$testo = "www.ianaz.ch";
$lung_testo = strlen($testo);
imagestring($this->im, 5, $width/2-$lung_testo*5, $height-20, $testo, $colore['bianco']);
}
function saveImg()
{
imagepng($this->im, "lol.png");
}
}
$img = new img;
?>
Nell'altra pagina ho fatto un semplice
<?php
include "img.class.php";
$nome_img = 'img.jpg';
$immagine = $img->loadImg($nome_img, "www.ianaz.ch");
if($immagine == 1)
{
echo "<p>Immagine modificata correttamente!</p>";
}
?>
Perchè devi emttere una "VAR IM" se vuoi utilizzare la stessa variabile.
Se è nella stessa funzione non serve.. ma se la utilizzi fuori dalla funzione devi dichiararla prima come var im e poi puoi usare il $this->im o $<nomeclasse>-im
:)
Quindi basta che metto semplicemente un var $im sopra? :p
Pure mettendo il
var $im;
non funziona.... help
<?php
class img
{
var $errore = array(
"Errore sconosciuto", // 0
"Errore nel caricamento dell immagine" // 1
);
var $im = "";
function loadImg($img_percorso, $testo)
{
$im = imagecreatefromjpeg($img_percorso);
$this->insertLogo($im, "logo.png");
$this->insertTesto($testo);
$this->saveImg();
return 1;
}
function insertLogo($im, $logoz="logo.png")
{
$watermark = imagecreatefrompng($logoz);
$waterm_w = imagesx($watermark);
$waterm_h = imagesy($watermark);
imagecopymerge($im, $watermark, 0, 0, 0, 0, $waterm_w, $waterm_h, 100);
}
function insertTesto($testo)
{
$colore['bianco'] = imagecolorallocate($im, 255, 255, 255);
$colore['blu'] = imagecolorallocate($im, 0, 0, 255);
$colore['rosso'] = imagecolorallocate($im, 255, 0, 0);
$colore['verde'] = imagecolorallocate($im, 0, 255, 0);
$colore['nero'] = imagecolorallocate($im, 0, 0, 0);
$width = imagesx($this->im);
$height = imagesy($this->im);
$testo = "www.ianaz.ch";
$lung_testo = strlen($testo);
imagestring($this->im, 5, $width/2-$lung_testo*5, $height-20, $testo, $colore['bianco']);
}
function saveImg()
{
imagepng($this->im, "lol.png");
}
}
$img = new img;
?>
Warning: imagecolorallocate(): supplied argument is not a valid Image resource in c:\programmi\easyphp1-8\www\img.class.php on line 29
ora mi da questo errore...praticamente non la vede come immagine
<?php
class img
{
var $errore = array(
"Errore sconosciuto", // 0
"Errore nel caricamento dell immagine" // 1
);
var $im = "";
function loadImg($img_percorso, $testo)
{
$im = imagecreatefromjpeg($img_percorso);
$this->insertLogo($im, "logo.png");
$this->insertTesto($testo);
$this->saveImg();
return 1;
}
function insertLogo($im, $logoz="logo.png")
{
$watermark = imagecreatefrompng($logoz);
$waterm_w = imagesx($watermark);
$waterm_h = imagesy($watermark);
imagecopymerge($im, $watermark, 0, 0, 0, 0, $waterm_w, $waterm_h, 100);
}
function insertTesto($testo)
{
$colore['bianco'] = imagecolorallocate($this->im, 255, 255, 255);
$colore['blu'] = imagecolorallocate($this->im, 0, 0, 255);
$colore['rosso'] = imagecolorallocate($this->im, 255, 0, 0);
$colore['verde'] = imagecolorallocate($this->im, 0, 255, 0);
$colore['nero'] = imagecolorallocate($this->im, 0, 0, 0);
$width = imagesx($this->im);
$height = imagesy($this->im);
$testo = "www.ianaz.ch";
$lung_testo = strlen($testo);
imagestring($this->im, 5, $width/2-$lung_testo*5, $height-20, $testo, $colore['bianco']);
}
function saveImg()
{
imagepng($this->im, "lol.png");
}
}
$img = new img;
?>
ehm....e cosa cambia?
Il codice attuale é (tolto l'inserimento del testo che é inutile):
<?php
class img
{
var $errore = array(
"Errore sconosciuto", // 0
"Errore nel caricamento dell immagine" // 1
);
var $im;
function loadImg($img_percorso, $testo, $posizione_x, $posizione_y)
{
$im = imagecreatefromjpeg($img_percorso);
$im_w = imagesx($im);
$im_h = imagesy($im);
$this->insertLogo($im, "logo.png");
//$wt_x = $this->calc_pos_x($posizione_x);
//$wt_y = $this->calc_pos_y($posizione_y);
$this->saveImg();
return 1;
}
function insertLogo($im, $logoz="logo.png")
{
$watermark = imagecreatefrompng($logoz);
$waterm_w = imagesx($watermark);
$waterm_h = imagesy($watermark);
imagecopymerge($im, $watermark, 0, 0, 0, 0, $waterm_w, $waterm_h, 100);
}
/*
function calc_pos_x($position_x='LEFT')
{
switch($position_x)
{
case 'LEFT':
$x = 0;
break;
case 'CENTER':
$x = $this->im_w / 2 - $this->waterm_w;
break;
case 'RIGHT':
$x = $this->im_w - $this->waterm_w;
break;
default:
$x = 0;
}
return $x;
}
function calc_pos_y($position_y='TOP')
{
switch($position_y)
{
case 'TOP':
$y = 0;
break;
case 'MIDDLE':
$y = $this->im_h / 2 - $this->waterm_h;
break;
case 'BOTTOM':
$y = $this->im_h - $this->waterm_h;
break;
default:
$y = 0;
}
return $y;
}
*/
function saveImg()
{
imagepng($this->im, "lol.png");
}
}
$img = new img;
?>
Quindi ora l'errore me lo da solamente alla creazione dell'immagine
imagepng($this->im, "lol.png");
che dice is not a valid Image resource
ti potei picchiare :muro:
$im = imagecreatefromjpeg($img_percorso);
$im è una variabile locale non $this->im ....
ti potei picchiare :muro:
$im = imagecreatefromjpeg($img_percorso);
$im è una variabile locale non $this->im ....
e infatti io ^come ho fatto? -.-
$im = imagecreatefromjpeg($img_percorso);
ora ti picchio veramente :) tanto sei a 2 km di distanza vengo li....
$im è una variabile che tiene solo nella funziona non nella classe, se metti $this->im la inserisci nella variabile dichiarata nella classe
DEVI METTERE $this->im non $im :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro:
ora ti picchio veramente :) tanto sei a 2 km di distanza vengo li....
$im è una variabile che tiene solo nella funziona non nella classe, se metti $this->im la inserisci nella variabile dichiarata nella classe
DEVI METTERE $this->im non $im :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro:
uahhahhah cucciolooooo
tu intendi fare:
function loadImg($img_percorso, $posizione_x, $posizione_y)
{
$this->im = imagecreatefromjpeg($img_percorso);
$im_w = imagesx($im);
$im_h = imagesy($im);
$this->insertLogo($im, "logo.png");
$wt_x = $this->calc_pos_x($posizione_x);
$wt_y = $this->calc_pos_y($posizione_y);
$this->saveImg();
return 1;
}
giusto?
e guarda gli errori che mi da dopo:
Notice: Undefined variable: im in c:\programmi\easyphp1-8\www\img.class.php on line 12
Warning: imagesx(): supplied argument is not a valid Image resource in c:\programmi\easyphp1-8\www\img.class.php on line 12
Notice: Undefined variable: im in c:\programmi\easyphp1-8\www\img.class.php on line 13
Warning: imagesy(): supplied argument is not a valid Image resource in c:\programmi\easyphp1-8\www\img.class.php on line 13
Notice: Undefined variable: im in c:\programmi\easyphp1-8\www\img.class.php on line 14
Warning: imagecopymerge(): supplied argument is not a valid Image resource in c:\programmi\easyphp1-8\www\img.class.php on line 26
é nella funzione loadImg() che creo la variabile $im e quindi devo utilizzarla come $im al suo interno no?!
LOL
<?php
class img
{
var $errore = array(
"Errore sconosciuto", // 0
"Errore nel caricamento dell immagine" // 1
);
var $im;
function loadImg($img_percorso, $testo)
{
$this->im = imagecreatefromjpeg($img_percorso);
$this->insertLogo($this->im, "logo.png");
$this->insertTesto($testo);
$this->saveImg();
return 1;
}
function insertLogo($im, $logoz="logo.png")
{
$watermark = imagecreatefrompng($logoz);
$waterm_w = imagesx($watermark);
$waterm_h = imagesy($watermark);
imagecopymerge($im, $watermark, 0, 0, 0, 0, $waterm_w, $waterm_h, 100);
}
function insertTesto($testo)
{
$colore['bianco'] = imagecolorallocate($this->im, 255, 255, 255);
$colore['blu'] = imagecolorallocate($this->im, 0, 0, 255);
$colore['rosso'] = imagecolorallocate($this->im, 255, 0, 0);
$colore['verde'] = imagecolorallocate($this->im, 0, 255, 0);
$colore['nero'] = imagecolorallocate($this->im, 0, 0, 0);
$width = imagesx($this->im);
$height = imagesy($this->im);
$testo = "www.ianaz.ch";
$lung_testo = strlen($testo);
imagestring($this->im, 5, $width/2-$lung_testo*5, $height-20, $testo, $colore['bianco']);
}
function saveImg()
{
imagepng($this->im, "lol.png");
}
}
$img = new img;
?>
e se non funziona cosi ti uccidi...
Ok, grazie mille
quindi nel nuovo ora é così:
function loadImg($img_percorso, $posizione_x, $posizione_y)
{
$this->im = imagecreatefromjpeg($img_percorso);
$im_w = imagesx($this->im);
$im_h = imagesy($this->im);
$this->insertLogo($this->im, "logo.png");
$wt_x = $this->calc_pos_x($posizione_x);
$wt_y = $this->calc_pos_y($posizione_y);
$this->saveImg();
return 1;
}
ma non sapevo che bisognava mettere $this->im anche all'interno dove si crea...come mai?
Perché l'ho dichiarata sopra con il var?
$im con $this->im ( sta diventando una chat di msn questo topic...)
e ma lol, se entro in msn mi uccidono :p
il var $im; si poteva anche tralasciare se non sbaglio no?!
Ok così é perfettamente funzionante:
<?php
class img
{
var $errore = array(
"Errore sconosciuto", // 0
"Errore nel caricamento dell immagine" // 1
);
var $im;
function loadImg($img_percorso, $posizione_x, $posizione_y)
{
$this->im = imagecreatefromjpeg($img_percorso);
$this->im_w = imagesx($this->im);
$this->im_h = imagesy($this->im);
$this->logoProperties("logo.png");
$this->wt_x = $this->calc_pos_x($posizione_x);
$this->wt_y = $this->calc_pos_y($posizione_y);
imagecopymerge($this->im, $this->watermark, $this->wt_x, $this->wt_y, 0, 0, $this->waterm_w, $this->waterm_h, 100);
$this->saveImg();
return 1;
}
function logoProperties($logoz="logo.png")
{
$this->watermark = imagecreatefrompng($logoz);
$this->waterm_w = imagesx($this->watermark);
$this->waterm_h = imagesy($this->watermark);
}
function calc_pos_x($position_x='LEFT')
{
switch($position_x)
{
case 'LEFT':
$x = 0;
break;
case 'CENTER':
$x = $this->im_w / 2 - $this->waterm_w / 2;
break;
case 'RIGHT':
$x = $this->im_w - $this->waterm_w;
break;
default:
$x = 0;
}
return $x;
}
function calc_pos_y($position_y='TOP')
{
switch($position_y)
{
case 'TOP':
$y = 0;
break;
case 'MIDDLE':
$y = $this->im_h / 2 - $this->waterm_h / 2;
break;
case 'BOTTOM':
$y = $this->im_h - $this->waterm_h;
break;
default:
$y = 0;
}
return $y;
}
function saveImg()
{
imagepng($this->im, "lol.png");
}
}
$img = new img;
?>
:D
grazie
non andava bene quello che ti avevo fatto io? :confused: :mbe:
non andava bene quello che ti avevo fatto io? :confused: :mbe:
???
si...bigolo :)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.