PHP utilisation class

Résolu/Fermé
jupiler - 19 oct. 2009 à 10:53
 jupiler - 19 oct. 2009 à 12:05
Bonjour,

j ai recupérer cette classe qui me semble nickel pour resizer mes images mais quand je l utilise j'ai des messages d'erreur je ne vois pas d'où cela vient

Merci de votre aide

script import-test4.php:

// debut resize image
class Image {

var $file;
var $image_width;
var $image_height;
var $width;
var $height;
var $ext;
var $types = array('','gif','jpeg','png','swf');
var $quality = 80;
var $top = 0;
var $left = 0;
var $crop = false;
var $type;

function Image($name='/images/') {
$this->file = $name;
$info = getimagesize($name);
$this->image_width = $info[0];
$this->image_height = $info[1];
$this->type = $this->types[$info[2]];
$info = pathinfo($name);
$this->dir = $info['dirname'];
$this->name = str_replace('.'.$info['extension'], '', $info['basename']);
$this->ext = $info['extension'];
}

function dir($dir='') {
if(!$dir) return $this->dir;
$this->dir = $dir;
}

function name($name='') {
if(!$name) return $this->name;
$this->name = $name;
}

function width($width='') {
$this->width = $width;
}

function height($height='') {
$this->height = $height;
}

function resize($percentage=50) {
if($this->crop) {
$this->crop = false;
$this->width = round($this->width*($percentage/100));
$this->height = round($this->height*($percentage/100));
$this->image_width = round($this->width/($percentage/100));
$this->image_height = round($this->height/($percentage/100));
} else {
$this->width = round($this->image_width*($percentage/100));
$this->height = round($this->image_height*($percentage/100));
}

}

function crop($top=0, $left=0) {
$this->crop = true;
$this->top = $top;
$this->left = $left;
}

function quality($quality=80) {
$this->quality = $quality;
}

function show() {
$this->save(true);
}

function save($show=false) {

if($show) @header('Content-Type: image/'.$this->type);

if(!$this->width && !$this->height) {
$this->width = $this->image_width;
$this->height = $this->image_height;
} elseif (is_numeric($this->width) && empty($this->height)) {
$this->height = round($this->width/($this->image_width/$this->image_height));
} elseif (is_numeric($this->height) && empty($this->width)) {
$this->width = round($this->height/($this->image_height/$this->image_width));
} else {
if($this->width<=$this->height) {
$height = round($this->width/($this->image_width/$this->image_height));
if($height!=$this->height) {
$percentage = ($this->image_height*100)/$height;
$this->image_height = round($this->height*($percentage/100));
}
} else {
$width = round($this->height/($this->image_height/$this->image_width));
if($width!=$this->width) {
$percentage = ($this->image_width*100)/$width;
$this->image_width = round($this->width*($percentage/100));
}
}
}

if($this->crop) {
$this->image_width = $this->width;
$this->image_height = $this->height;
}

if($this->type=='jpeg') $image = imagecreatefromjpeg($this->file);
if($this->type=='png') $image = imagecreatefrompng($this->file);
if($this->type=='gif') $image = imagecreatefromgif($this->file);

$new_image = imagecreatetruecolor($this->width, $this->height);
imagecopyresampled($new_image, $image, 0, 0, $this->top, $this->left, $this->width, $this->height, $this->image_width, $this->image_height);

$name = $show ? null: $this->dir.DIRECTORY_SEPARATOR.$this->name.'.'.$this->ext;
if($this->type=='jpeg') imagejpeg($new_image, $name, $this->quality);
if($this->type=='png') imagepng($new_image, $name);
if($this->type=='gif') imagegif($new_image, $name);

imagedestroy($image);
imagedestroy($new_image);

}

}

//Creer un thumb avec 200px de large, la hauteur est automatique.
$thumb = new Image('/images/'.$filename);
$thumb->width(700);
$thumb->save();

// fin resize image

erreur :

Warning: getimagesize(/images/test21.jpg) [function.getimagesize]: failed to open stream: No such file or directory in W:\var\www\mondossier\import\import-test4.php on line 74

Warning: Division by zero in W:\var\www\mondossier\import\import-test4.php on line 138

Warning: Division by zero in W:\var\www\mondossier\import\import-test4.php on line 138

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in W:\var\www\prestiglass\import\import-presti4.php on line 166

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in W:\var\www\mondossier\import\import-test4.phpon line 167

Warning: imagedestroy(): supplied argument is not a valid Image resource in W:\var\www\mondossier\import\import-test4.php on line 174

Warning: imagedestroy(): supplied argument is not a valid Image resource in W:\var\www\mondossier\import\import-test4.php on line 175
A voir également:

2 réponses

ca fonctionne parfaitement.
vérifie que ton chemin pour l'image soit correct
$thumb = new Image('/images/'.$filename);

la première erreur vient du fait qu'il ne trouve pas l'image
et forçément les autres du fait qu'il ne peut pas traiter l'image
0
Bonjour Garf merci

j ai trouve il allait mettre le chemin comme ca

('./images/'.$filename);

avec le point devant /images
0