Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > Imagick
Imagick Forum d'entraide pour l'extension Imagick permettant de manipuler des images en PHP (port de l'API ImageMagick).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2006, 18h40   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à super-momo
Par défaut [ImageMagick] Upload d'image et redimenssionnement

Bonsoir,

J’aurai voulu vous demander un petit service en PHP.

Voila je n’arrive pas a faire un uploade d’image sur un serveur en redimensionnant l’image tout en gardant les proportions.

Donc j'ai une image qui s’appelle belle montagne.jpg sur mon disque dur et bien je souhaiterai mettre cette image sur le serveur mais en plus je souhaiterai mettre une copie avec un redimensionnement et la nommer en imageOriginale1.jpg et celle qui est redimensionner porterai le nom de imageVignette1.jpg.

De plus il faudrait que le script PHP vérifie que les fichiers n’existe pas et s’il existe il devrait rajouter 1 au chiffre des images ce qui nommerai les images de la façon suivante imageOriginal2.jpg et imageVignette2.jpg, et ainsi de suite imageOriginal3.jpg, imageVignette3.jpg …….

J'arrive a uploader un fichier en gardant son nom d'origine c'est deja ca, avec le code ci-dessous:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if(isset($_FILES['photo']))
{
 
  $extensions_ok = array('jpg');
  $taille_max = 3000000;
  $dest_dossier = '../photos/';
  // vérifications
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
  {
    $erreur = 'Veuillez sélectionner un fichier de type jpg, chaque fichier doit faire moins de 3Mo et ne contenir aucun accents !';  
  }
  elseif( file_exists($_FILES['photo']['tmp_name']) 
          and filesize($_FILES['photo']['tmp_name']) > $taille_max)
  {
    $erreur = 'Votre fichier doit faire moins de 3Mo !';
  }
  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['photo']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
	$erreure = 'transfère ok';
  }

Je vous remercie par avance.

Merci de me donner un peut de temps. Bye !
super-momo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2006, 10h58   #2
Membre confirmé
 
Avatar de Julien.alkaza
 
Inscription : octobre 2004
Messages : 240
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : octobre 2004
Messages : 240
Points : 240
Points : 240
Envoyer un message via MSN à Julien.alkaza
Salut,

Pour garder le rapport L - h, tu dois d'abord déterminer la dimension maximale que tu veux obtenir après redim. ensuite, tu récupère les info de ton image d'origine, un petit calcul, et hop!!!

Il y a un tuto sur ca....Comment faire une galerie...Je m'en suis inspiré pour faire un module de mon site.
__________________
Admin Réseaux & Systèmes.

Red Hat Certified Technician...#604006101698235
Julien.alkaza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2006, 21h10   #3
Invité de passage
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à super-momo
Ok je vai parcourir les tutos plus en détail, pourtant j'ai fait une recherche sans trouver les réponses a mes questions merci.
super-momo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2006, 22h23   #4
Membre habitué
 
Avatar de kodokan
 
Lycéen
Inscription : avril 2006
Messages : 128
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : avril 2006
Messages : 128
Points : 114
Points : 114
Salut

Fonction imagecopyresized() permet de garder le rapport ( voir l'exemple ):
http://fr3.php.net/manual/fr/functio...opyresized.php
__________________

N'oubliez pas de voir les
quand la réponse vous convient, un pt'it serait le bienvenu
Mon site de blogs
Kodokan arena [ en construction ]
kodokan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2006, 17h29   #5
Invité de passage
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à super-momo
Coucou les ptits loups bon deja je vous souhaite de très bonnes fêtes de fin d'année.

Je reviend sur mon probleme alors j'ai essayé d'adapter ce que kodokan ma suggéré c'est à dire l'utilisation de "imagecopyresized" et bien cela ne marche pas ou plutot je n'arrive pas a le mettre en place voici mon integration de cette methode de redimmentionnement d'image au sein de mon code d'upload:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
if(isset($_FILES['photo']))
{
 
  $extensions_ok = array('jpg');
  $taille_max = 3000000;
  $dest_dossier = '../photos/';
  // vérifications
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
  {
    $erreur = 'Veuillez sélectionner un fichier de type jpg, chaque fichier doit faire moins de 3Mo et ne contenir aucun accents !';  
  }
  elseif( file_exists($_FILES['photo']['tmp_name']) 
          and filesize($_FILES['photo']['tmp_name']) > $taille_max)
  {
    $erreur = 'Votre fichier doit faire moins de 3Mo !';
  }
  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['photo']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
	//
	//--code de redimmentionnement de l'image/////////////////////////////////////////////////
	//
	// Fichier et nouvelle taille
	$filename = $dest_fichier;
	$percent = 0.5;
 
	// Content type
	header('Content-type: image/jpeg');
 
	// Calcul des nouvelles dimensions
	list($width, $height) = getimagesize($filename);
	$newwidth = $width * $percent;
	$newheight = $height * $percent;
 
	// chargement
	$thumb = imagecreatetruecolor($newwidth, $newheight);
	$source = imagecreatefromjpeg($filename);
 
	// Redimensionnement
	imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
 
	// Affichage
	//imagejpeg($thumb);
	//--fin code de redimmentionnement de l'image fin/////////////////////////////////////////////
	//
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $thumb );
	$erreure = 'transfère ok';
 
 
  }
}
Le code pour le redimmentionnement que j'ai ajoute au code précedent ce trouve entre ces deux commentaire:

Code :
//--code de redimmentionnement de l'image/////////////////////////////////////////////////
et

Code :
//--fin code de redimmentionnement de l'image fin/////////////////////////////////////////////
J'ai plein de warning qui s'affichede la façon suivante:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
br />
<b>Warning</b>:  getimagesize(nuage_monde.jpg): failed to open stream: No such file or directory in <b>e:\logiciels\easyphp1-8\www\essai_site_mysql\mes_creations\flash\botafogo site\admin\upphotos.php</b> on line <b>53</b><br />
<br />
<b>Warning</b>:  imagecreatetruecolor(): Invalid image dimensions in <b>e:\logiciels\easyphp1-8\www\essai_site_mysql\mes_creations\flash\botafogo site\admin\upphotos.php</b> on line <b>58</b><br />
<br />
<b>Warning</b>:  imagecreatefromjpeg(nuage_monde.jpg): failed to open stream: No such file or directory in <b>e:\logiciels\easyphp1-8\www\essai_site_mysql\mes_creations\flash\botafogo site\admin\upphotos.php</b> on line <b>59</b><br />
<br />
<b>Warning</b>:  imagecopyresized(): supplied argument is not a valid Image resource in <b>e:\logiciels\easyphp1-8\www\essai_site_mysql\mes_creations\flash\botafogo site\admin\upphotos.php</b> on line <b>62</b><br />
<br />
<b>Warning</b>:  move_uploaded_file(../photos/): failed to open stream: Permission denied in <b>e:\logiciels\easyphp1-8\www\essai_site_mysql\mes_creations\flash\botafogo site\admin\upphotos.php</b> on line <b>69</b><br />
<br />
<b>Warning</b>:  move_uploaded_file(): Unable to move 'E:/logiciels/EasyPHP1-8\tmp\php293.tmp' to '../photos/' in <b>e:\logiciels\easyphp1-8\www\essai_site_mysql\mes_creations\flash\botafogo site\admin\upphotos.php</b> on line <b>69</b><br />
<html>.....
Pouvez vous m'aidez a comprendre mon erreure ? En faite je debute en php je connais deja un language de programmation "action script" et "java script".
Mais la le php j'ai besoin d'aide Merci.
super-momo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h02.


 
 
 
 
Partenaires

Hébergement Web