Redimensionnement Image en php !!

Résolu/Fermé
muska92 Messages postés 277 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 14 août 2009 - 1 déc. 2008 à 17:54
 lordinary - 14 déc. 2008 à 19:58
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
1 déc. 2008 à 18:25
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 lundi 14 février 2005 Statut Membre Dernière intervention 14 août 2009 42
1 déc. 2008 à 20:11
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
1 déc. 2008 à 20:40
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 lundi 14 février 2005 Statut Membre Dernière intervention 14 août 2009 42
1 déc. 2008 à 21:25
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
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 lundi 14 février 2005 Statut Membre Dernière intervention 14 août 2009 42
11 déc. 2008 à 03:27
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
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 lundi 14 février 2005 Statut Membre Dernière intervention 14 août 2009 42
12 déc. 2008 à 19:01
pas dans logs , directement a la racine du serveur ( / ) la ou ya le dossier logs et celui de ton site
0
Great thanks :d
0