Redimensionnement Image en php !!

Résolu
muska92 Messages postés 277 Date d'inscription   Statut Membre Dernière intervention   -  
 lordinary -
Bonjour,
Voila mon problème j'utilise la librairie GD pour crée des miniature;
le souci et que a chaque fois que j'upload une images qui a plus 2mo rien ne se passe la page reste blanche ,
pourtant avec les autre images de moins de 1mo tout marche ca crée bien les miniature ( Gif , png, jpeg).

la cllasse que j'utilise pour les uploads :

// Classe principale

class Img{
// Propiétés de l'objet
var $name; // nom de l'image source
var $org; // dossier d'origine
var $ext; // extension de l'image
var $error;// Varaible pour les erreurs
var $dest; // dossier de destination
var $lpoint; // position du dernier point

/* constructeur
* retourne void (rien)
*/
function doImg($name, $org, $dest){
$this->name = (string) $name;
$this->org = (string) $org;
$this->dest = (string) $dest;
$this->lpoint = $this->LastPoint();
$this->ext = $this->GetExtension();
}

/* Récupère la position du dernier point
* retourne (int)
*/
function LastPoint(){
return strrpos($this->name, '.');
}

/* Récupère l'extension du fichier
* retourne (string)
*/
function GetExtension(){
return substr($this->name, $this->lpoint);
}

/* Retourne l'erreur si il en a une
* retourne (string)
*/
function Error(){
if(!empty($this->error)){
return $this->error();
}
}
}

// Classe Fille
class thb extends Img{
// Propiétés de l'objet
var $suffix; // suffix à ajouter à l'image
var $thb_name; // nom complet de l'image réduite
var $size; // taille pour réduction
var $quality; // quamité de l'image réduite
var $name; // nom de l'image source
var $org; // dossier d'origine de l'image
var $dest; // dossier de destination

/* constructeur
* (string) nom
* (string) $dossier d'origine
* (string) dossier de destination
* retourne void (rien)
*/
function doImg($name, $org, $dest){
$this->name = (string) $name;
$this->dest = (string) $dest;
$this->org = (string) $org;
$this->lpoint = Img::LastPoint();
$this->ext = Img::GetExtension();
}

/* Ajout des paramètres
* (string) suffix de l'image
* (int) taille (px)
* (int) qualité (%)
* retourne void (rien)
*/
function SetParam($suf,$size, $quality){
$this->suffix = (string) $suf;
$this->size = (int) $size;
$this->quality = (int) $quality;
}

/* Ajout des paramètres séparament
* (int) taille ($x)
* retourne void (rien)
*/
function SetSize($size){
$this->size = (int) $size;
}

/*
* (int) Qualité (%)
* retourne void (rien)
*/
function SetQuality($quality){
$this->quality = (int) $quality;
}

/*
* (string) suffix
* retourne void (rien)
*/
function SetSuffix($suf){
$this->suffix = (string) $suf;
}

/*
* récupère le nom +chemin de l'image résultante
* retourne un (string)
*/
function GetThbName(){
$thb = substr($this->name, 0, Img::LastPoint());
$thb.= $this->suffix.$this->ext;
return $this->thb_name = $this->dest.$thb;
}

/* Lance le redimenssionnement
* retourne un (bool)
*/
function doThb(){
if($this->Resize()){
return true;
}else{
return false;
}
}

/* Récupère le nom + le chemin de l'image source
* retourne void (rien)
*/
function GetOrigine(){
return $this->org.$this->name;
}

/*
* Fonctions privées
*/

/* Fonction de redimensionnement
* * retourne un (bool)
*/
function Resize(){
$source = $this->org.$this->name;
$destination = $this->GetThbName();

if (!file_exists($source)){
$this->error = "Erreur : Le Fichier n'existe pas !";
}
if(!function_exists("Imagecreatefromjpeg")){
$this->error = "Erreur : La Librairie GD n'est pas instalée !";
}

switch($this->ext){
case '.jpg':
case '.jpeg':
case '.JPG':
$src_img=imagecreatefromjpeg($source);
break;
case '.png':
$src_img=imagecreatefrompng($source);
break;
case '.gif':
$src_img=imagecreatefromgif($source);
break;
default:
$this->error = "Erreur: Extension non autorisée";
break;
}

if(!$src_img){
$this->error = "Erreur : Lecture impossible de l'image ".$source." !";
}

//Taille de l'image originale
$w = imagesx($src_img);
$h = imagesy($src_img);

//Récupère les proportions
if($w<$h){
$p = $w / $h;
$height = $this->size;
$width = $p * $height;
}else{
$p = $h / $w;
$width = $this->size;
$height = $p * $width;
}

$dst_img = ImageCreateTrueColor($width, $height);
if(!$dst_img){
$this->error = "Erreur : Buffer non créé : ".$dst_img;
}

imagecopyresampled($dst_img,$src_img,0,0,0,0,$width,$height,$w,$h);

if(imagejpeg($dst_img,$destination,$this->quality)){
return true;
}else{
return false;
}
}
}
/****************************

puis l'appel la function de la sorte :

$thb = new thb;
// appel du constructeur
// nim de la source: image.jpeg
// chemin source: ./upload/img/ (dossier courant)
// destianation: ./upload/min/ (dossier courant)
$thb->doImg('image.jpeg', './upload/img/', './upload/min/');
// Config des parametres
// prefix: _thb
// taille du + grd coté 250px
// qualité 100%
$thb->SetParam('_thb', 100, 100);
// pour connaitre le nom et chemin de l'image réduite
// résultat: ./image_thb.jpeg
$thumb = $thb->GetThbName();
// pour connaitre le nom et chemin de l'image d'origine
// résultat: ./image.jpeg
$source = $thb->GetOrigine();
// Lance le redimensionenemt
$thb->doThb();
a l'aide !!!
A voir également:

6 réponses

Utilisateur anonyme
 
Bonsoir,

il me semblerait que le problème vienne d'une limite à 2M (pas du code) pour uploader une image. Il faut la réduire avant de l'uploader avec un logiciel adéquat
0
muska92 Messages postés 277 Date d'inscription   Statut Membre Dernière intervention   42
 
slt;
le probleme vien pas de la parce que j'arrive a uploader normalement l'image de 2Mo ( limit 3mo); c'est au moment du redimensionnement que ca foire
0
Utilisateur anonyme
 
je vous suggère une autre piste :

l'image est uploadée alors redimensionnez là juste pour l'affichage avec :

echo "<img src='nom de l'image.type' with='".$largeurcalculéee."'>;
0
muska92 Messages postés 277 Date d'inscription   Statut Membre Dernière intervention   42
 
c'est ce que je fait pour l'instant , pour une ou 2 images c'est pas trop grave , mais le truc sur ma page j'affiche 20 article avec photos donc c'est un peut long a charger même pour l'ADSL
merci tt de meme
0
lordinary
 
Salut, j'ai le même problème que toi (script qui se stoppe lors de la création de l'image si l'image est trop lourde....ou trop grande). Je sais pas vraiment si c'est du ) la taille en Mo ou à la résolution.... Tu as trouvé une solution depuis avoir posté ton problème ?
0
muska92 Messages postés 277 Date d'inscription   Statut Membre Dernière intervention   42
 
salut , c'est bon j'ai pu régler mon problème finalement je donne la solution:
la classe que j'utilise fonctionne avec php5 et comme je suis sur du php 4 ça marcher pas .
ps: je suis chez 1and1 pour activer le php suffit pour ca de rajouter un fichiers .htaccess et de mettre cette ligne dedans :

AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php
0
lordinary
 
Tu le mets ou ton fichier .htaccess ? J'en ai un dans le dossier logs a la racine du site, mais j'ai pas de droits d'écriture dessus donc pas moyen de modifier le .htaccess :S
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
muska92 Messages postés 277 Date d'inscription   Statut Membre Dernière intervention   42
 
pas dans logs , directement a la racine du serveur ( / ) la ou ya le dossier logs et celui de ton site
0
lordinary
 
Great thanks :d
0