Bonjour,
j'ai une fonction qui de "temps en temps" chez l'hébergeur fonctionne ou...
pas !
j'y perds mon latin...
2ème question en vérifiant chez l'hebergeur le fichier temp se crée sur la
racine... pas tres élégant! comment y remèdier ?
merci.
<?php
function upload_resize($rep , $newL){ // repertoire, nouvelle largeur
//nom de l'array
$clef=(array_keys ($_FILES));
//**** controle du type d'image ****
if($_FILES[$clef[0]]['type'] == 'image/pjpeg' | $_FILES[$clef[0]]['type'] ==
'image/x-png' & $_FILES[$clef[0]]['size']<300000){
/********** UPLOAD *************/
copy($_FILES[$clef[0]]['tmp_name'], $rep.$_FILES[$clef[0]]['name']);
/********** DIMENSIONS DE L' IMAGE *************/
$image = $rep.$_FILES[$clef[0]]['name'];
/****** RECHERCHE DES DIMENSIONS *****/
$size = getimagesize("$image");
//$size est un tableau [0] = Largeur; [1] = Hauteur
//recherche du rapport image originale image redim.
$rapport= $size[0]/$newL;
$newH=$size[1]/$rapport;
//H = nombre entier
settype($newH , integer);
/*
*** CREATION NOUVELLE IMAGE EN FONCTION DU TYPE DE L'IMAGE **
Vars = nouvelle largeur = $newL nouvelle hauteur = $newH
$image = ligne 11
*/
// 1- IMAGE JPEG
if($_FILES[$clef[0]]['type'] == 'image/pjpeg'){
$im = imagecreatefromjpeg("$image");
// creation d'une image vide aux dimensions requises
$temp_im= imagecreatetruecolor($newL,$newH);
//création de l'image redimensionnée
ImageCopyResampled($temp_im , $im , 0,0,0,0,$newL,$newH,$size[0],$size[1]);
//copie de l'image dans le repertoire souhaité $rep
imagejpeg($temp_im , $rep.'new_'.$_FILES[$clef[0]]['name']); //$rep
// controle
global $affiche;
$affiche=$rep.'new_'.$_FILES[$clef[0]]['name'];
//
} // if jpeg
/************** FIN DU JPEG ***************/
// 2- IMAGE PNG
if($_FILES[$clef[0]]['type'] == 'image/x-png'){
$im = imagecreatefrompng("$image");
// creation d'une image vide aux dimensions requises
$temp_im= imagecreatetruecolor($newL,$newH);
//création de l'image redimensionnée
ImageCopyResampled($temp_im , $im , 0,0,0,0,$newL,$newH,$size[0],$size[1]);
//copie de l'image dans le repertoire souhaité $rep
imagepng($temp_im , $rep.'new_'.$_FILES[$clef[0]]['name']); //$rep
// controle
global $affiche;
$affiche=$rep.'new_'.$_FILES[$clef[0]]['name'];
//
} // if png
} // if($_FILES....
else{
global $msg;
$msg= "seuls les fichiers *.jpg et *.png peuvent être chargés<br>Modifiez le
fichier<br>\n";
}
clearstatcache();
} //function upload_resize
/********************************************/
?>
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Molina
Bonjour,
Le mieux c'est de nous expliquer ce que tu veux faire. Si j'ai bien compris... Redimensionner une image que tu charges sur un FTP par exemple.
Mon dieu que tu te compliques la vie !!! ^^
Plus sérieusement si tu as plusieurs fichiers utilise une simple boucle for pour récupérer chaque information d'un fichier : type, taille...
$clef=(array_keys ($_FILES));
Tu te perds pas la suite car tu utilises des clef[0] & Cie. On peut pas s'en sortir comme ça.
$_FILES[$clef[0]]['size']<300000
Normalement la taille est limitée au niveau du serveur mais dans ton cas ça ne peut pas forcément suffire... À toi de voir.
$rapport= $size[0]/$newL;
Ici il vaut mieux utiliser les opérateurs float/int pour convertir tes valeurs entières en flottants. De même pas la suite pas besoin d'un settype, convertis les nombre lors des opérations. Je suppose que ton $rapport vaut parfois un valeur entière alors que ça devrait être un flottant, mais je n'en suis pas certain, j'utilise toujours des opérateurs pour éviter les bogues.
if($_FILES[$clef[0]]['type'] == 'image/pjpeg'){
pjpeg ? Ça peut aussi être jpeg, pjpeg je crois que c'est pour Progressive JPEG, ça fonctionnera donc avec certaines images et pas avec d'autres...
if($_FILES[$clef[0]]['type'] == 'image/x-png'){
Encore ? Règle : NE JAMAIS COPIER-COLLER UN CODE, CRÉER UNE FONCTION
Donc crée une fonction générer_image pour générer ton image à partir de l'image chargée avec l'une des fonctions imagecreate*.
seuls les fichiers *.jpg et *.png peuvent être chargés
Et ça n'affiche jamais ce message ? Pour reparler de pjpeg ou jpeg ça devrait parfois l'afficher, non ?
Dernière remarque, tu n'es pas obligé de vérifier le type de l'image, une astuce pour consister à appeler les fonctions directement, si elles échouent c'est que le fichier n'est ni un JPEG ni un PNG. Mais c'est pas trop propre, il faut voir si la méthode que tu utilises est bonne. Normalement il n'y a que 3 types : PNG, JPEG et PJPEG... Je ne penses pas qu'il y ait de PPNG...
Je t'envoie un code que j'ai utilisé sur un projet.
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Bonjour,
Le mieux c'est de nous expliquer ce que tu veux faire.
Si j'ai bien compris... Redimensionner une image que tu charges sur un FTP
par exemple.
Mon dieu que tu te compliques la vie !!! ^^
Plus sérieusement si tu as plusieurs fichiers utilise une simple boucle for
pour récupérer chaque information d'un fichier : type, taille...
$clef=(array_keys ($_FILES));
Tu te perds pas la suite car tu utilises des clef[0] & Cie. On peut pas s'en
sortir comme ça.
$_FILES[$clef[0]]['size']<300000
Normalement la taille est limitée au niveau du serveur mais dans ton cas ça
ne peut pas forcément suffire... À toi de voir.
$rapport= $size[0]/$newL;
Ici il vaut mieux utiliser les opérateurs float/int pour convertir tes
valeurs entières en flottants.
De même pas la suite pas besoin d'un settype, convertis les nombre lors des
opérations.
Je suppose que ton $rapport vaut parfois un valeur entière alors que ça
devrait être un flottant, mais je n'en suis pas certain, j'utilise toujours
des opérateurs pour éviter les bogues.
if($_FILES[$clef[0]]['type'] == 'image/pjpeg'){
pjpeg ? Ça peut aussi être jpeg, pjpeg je crois que c'est pour Progressive
JPEG, ça fonctionnera donc avec certaines images et pas avec d'autres...
if($_FILES[$clef[0]]['type'] == 'image/x-png'){
Encore ?
Règle : NE JAMAIS COPIER-COLLER UN CODE, CRÉER UNE FONCTION
Donc crée une fonction générer_image pour générer ton image à partir de
l'image chargée avec l'une des fonctions imagecreate*.
seuls les fichiers *.jpg et *.png peuvent être chargés
Et ça n'affiche jamais ce message ? Pour reparler de pjpeg ou jpeg ça
devrait parfois l'afficher, non ?
Dernière remarque, tu n'es pas obligé de vérifier le type de l'image, une
astuce pour consister à appeler les fonctions directement, si elles échouent
c'est que le fichier n'est ni un JPEG ni un PNG. Mais c'est pas trop propre,
il faut voir si la méthode que tu utilises est bonne. Normalement il n'y a
que 3 types : PNG, JPEG et PJPEG... Je ne penses pas qu'il y ait de PPNG...
Je t'envoie un code que j'ai utilisé sur un projet.
JM
--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Le mieux c'est de nous expliquer ce que tu veux faire. Si j'ai bien compris... Redimensionner une image que tu charges sur un FTP par exemple.
Mon dieu que tu te compliques la vie !!! ^^
Plus sérieusement si tu as plusieurs fichiers utilise une simple boucle for pour récupérer chaque information d'un fichier : type, taille...
$clef=(array_keys ($_FILES));
Tu te perds pas la suite car tu utilises des clef[0] & Cie. On peut pas s'en sortir comme ça.
$_FILES[$clef[0]]['size']<300000
Normalement la taille est limitée au niveau du serveur mais dans ton cas ça ne peut pas forcément suffire... À toi de voir.
$rapport= $size[0]/$newL;
Ici il vaut mieux utiliser les opérateurs float/int pour convertir tes valeurs entières en flottants. De même pas la suite pas besoin d'un settype, convertis les nombre lors des opérations. Je suppose que ton $rapport vaut parfois un valeur entière alors que ça devrait être un flottant, mais je n'en suis pas certain, j'utilise toujours des opérateurs pour éviter les bogues.
if($_FILES[$clef[0]]['type'] == 'image/pjpeg'){
pjpeg ? Ça peut aussi être jpeg, pjpeg je crois que c'est pour Progressive JPEG, ça fonctionnera donc avec certaines images et pas avec d'autres...
if($_FILES[$clef[0]]['type'] == 'image/x-png'){
Encore ? Règle : NE JAMAIS COPIER-COLLER UN CODE, CRÉER UNE FONCTION
Donc crée une fonction générer_image pour générer ton image à partir de l'image chargée avec l'une des fonctions imagecreate*.
seuls les fichiers *.jpg et *.png peuvent être chargés
Et ça n'affiche jamais ce message ? Pour reparler de pjpeg ou jpeg ça devrait parfois l'afficher, non ?
Dernière remarque, tu n'es pas obligé de vérifier le type de l'image, une astuce pour consister à appeler les fonctions directement, si elles échouent c'est que le fichier n'est ni un JPEG ni un PNG. Mais c'est pas trop propre, il faut voir si la méthode que tu utilises est bonne. Normalement il n'y a que 3 types : PNG, JPEG et PJPEG... Je ne penses pas qu'il y ait de PPNG...
Je t'envoie un code que j'ai utilisé sur un projet.
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)