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 01/02/2007, 16h13   #1
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
Par défaut [ImageMagick] Redimensionner une image

Bonjour,
Je suis en train de développer une partie administration pour une personne qui n'y connait pas grand chose en informatique.
Je gére celle-ci via php/mysql

Cette personne doit être capable de pouvoir entrer un nouveau produit. Pour le moment pas de soucis....il n'y a qu'à suivre les instructions.
En revanche, je rencontre un probleme à partir des images...je m'explique.

La personne va devoir mettre entre 1 et 10 images par produits.
Sachant que cette personne n'y connait rien en info...j'aurais voulu savoir si vous avez un script qui permettait d'insérer des images dans un type FILE et ensuite les copiers sur un serveurs ?...bon ça je dois dire que je sais faire.
Mais l'autre probleme est que je voudrais redimensionner les images qu'il va insérer de façon automatique...faire en quelque sorte une redimention à la volée mais en gardant les proportions de l'image pour qu'elle ne soit pas entendue un max.

Donc en gros, un script qui ajoute l'image dans le dossier sur le serveur et insérer un nouvelle image redimensionner dans ce même dossier.

J'ai déjà fait plusieurs recherches mais rien de concluant.

Merci d'avance
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2007, 16h21   #2
Nouveau Membre du Club
 
Avatar de dontDeleteMe
 
Inscription : octobre 2006
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : octobre 2006
Messages : 80
Points : 37
Points : 37
ben t'as qua les redimensionner quand elle sont affichées : <img width="XXX" heigth="YYY" ... />
dontDeleteMe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2007, 16h30   #3
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
oui mais il y en a en format paysage et d'autres en portrait...j'y avais pensé
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2007, 16h34   #4
Nouveau Membre du Club
 
Avatar de dontDeleteMe
 
Inscription : octobre 2006
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : octobre 2006
Messages : 80
Points : 37
Points : 37
alors yaka récupèrer le width et le heigth de l'image au départ et de les diviser pour obtenir un rapport que tu stockeras dans une variable.

comme ça, si ton image, elle est en portrait et que tu la redimensionne en width, le height sera calculé selon le rapport stocké dans une variable.
dontDeleteMe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2007, 16h35   #5
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
et c'est quoi la fonction qui prend la taille de l'image ?
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2007, 16h38   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Avec l'extension GD :

Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2007, 17h06   #7
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Juste une petite précision, il vaut mieux les redimensionner toi même à la main si tu dois le faire pour un grand nombre d'image. Ca consommera moins de ressources qu'avec les fonctions PHP
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2007, 17h15   #8
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
vi mais c'est une personne qui n'y connaitr strictement rien en informatique et il y a une chance sur 1000 qu'il comprenne comment redimensionner une image
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2007, 17h45   #9
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Tu n'as qu'à lui faire un script dans ton application de retouche d'image. Y'a qu'un clic à faire....

En plus, si les mecs postent des images d'appareil photo numérique prises en très grand format, cela risque d'augmenter cruellement le temps de chargement des pages puisqu'avec une fonction de remise à l'échelle, tu ne changes que les dimensions, et pas le poids du fichier....

Il vaut mieux les redimensionner au format voulu...
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 07h44   #10
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 52
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 52
Points : 37
Points : 37
VSO Image Resizer : Un soft ultra simple même pour une personne novice en info.
__________________
C'est au pied du mur que l'on voit le mieux le mur!!!!!
ythierrin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 09h13   #11
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
cool VSO Image Resizer ! mais un peu délicat pour certain cas. J'ai des images en paysage et portrait...donc si je mets en 410*272 en paysage l'image est nikel mais en portrait, elle n'est pas deformé mais petite qund même.

Vous avez un soft qui permet de réduire par rapport à un pourcentage en gardant les proportions ?

merci d'avance
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 15h55   #12
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
il fonctionne niquel ce petit bout de code !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     $image =  "2.jpg";                
     $size = getimagesize("$image");
       $height = $size[1];
       $width = $size[0];
     if ($height > 150)
         {
               $height = 150;
               $percent = ($size[1] / $height);
               $width = ($size[0] / $percent);
         }
     else if ($width > 150)
         {
               $width = 150;
               $percent = ($size[0] / $width);
               $height = ($size[1] / $percent);
         }
     echo "<img src='2.jpg' height=\"$height\" width=\"$width\" />";
?>
Il déforme rien c'est cool. Par contre il faudrait que je fasse un systeme pour parcourir le dossier mais de ce faire je vais perdre ma fonction qui me permet d'agrandir mon image quand on clique dessus (j'avais un truc avec suivant / precedent)
Vous pouvez me dire la commande pour parcourir le dossier ? merci

opendir ? closedir
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 16h05   #13
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Code :
1
2
3
4
5
6
7
8
9
10
<?php
$dir="./fichiers/images/imagesdiaporama/"; 
$diropen=opendir($dir);
	while($file=readdir($diropen)){
	    $extension= strtolower(substr(strrchr( $file, "." ), 1 ));
	    if($extension=="jpg"){//tes instructions
            }
        }
closedir()
?>
La prochaine fois, essaie tout seul et on t'aidera si t'y arrives pas

N'oublie pas
Et enfin, d'appuyer sur
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 16h06   #14
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
yep j'ai bidouiller un petit truc et ça fonctionne bien... manque plus qu'à ouvrir ça dans un popup
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 10h46   #15
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
re !

voilà le script PARFAIT pour mon pb :

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<!doctype html public "-//w3c//dtd html 4.01 transitional//en"> 
<html> 
<head> 
<title>Envoie de photos</title> 
<?php 
//path where to store images 
$path_thumbs = "upload"; 
$path_big = "upload"; 
 
//the new width of the resized image. 
$img_thumb_width = 130; // in pixcel 
 
$extlimit = "yes"; //Do you want to limit the extensions of files uploaded (yes/no) 
//allowed Extensions 
$limitedext = array(".gif",".jpg",".png",".jpeg",".bmp"); 
 
 
//check if folders are Writable or not 
//please CHOMD them 777 
if (!is_writeable($path_thumbs)){ 
die ("Erreur: Le dossier <b>($path_thumbs)</b> n'est pas accessible"); 
} 
if (!is_writeable($path_big)){ 
die ("Erreur: Le dossier <b>($path_big)</b> n'est pas accessible"); 
} 
 
//if the for has submittedd 
if (isset($_POST['upForm'])){ 
 
$file_type = $_FILES['imgfile']['type']; 
$file_name = $_FILES['imgfile']['name']; 
$file_size = $_FILES['imgfile']['size']; 
$file_tmp = $_FILES['imgfile']['tmp_name']; 
 
//check if you have selected a file. 
if(!is_uploaded_file($file_tmp)){ 
echo "Error: Veuillez sélectionner une image!. <br />--<a href=\"$_SERVER[PHP_SELF]\">back</a>"; 
exit(); //exit the script and don't do anything else. 
} 
//check file extension 
$ext = strrchr($file_name,'.'); 
$ext = strtolower($ext); 
if (($extlimit == "yes") && (!in_array($ext,$limitedext))) { 
echo "L'extension du fichier sélectionné n'est pas correcte. <br /><a href=\"$_SERVER[PHP_SELF]\">back</a>"; 
exit(); 
} 
//get the file extension. 
$getExt = explode ('.', $file_name); 
$file_ext = $getExt[count($getExt)-1]; 
 
//create a random file name 
$rand_name = md5(time()); 
$rand_name= rand(0,999999999); 
//get the new width variable. 
$ThumbWidth = $img_thumb_width; 
 
//keep image type 
if($file_size){ 
if($file_type == "image/pjpeg" || $file_type == "image/jpeg"){ 
$new_img = imagecreatefromjpeg($file_tmp); 
}elseif($file_type == "image/x-png" || $file_type == "image/png"){ 
$new_img = imagecreatefrompng($file_tmp); 
}elseif($file_type == "image/gif"){ 
$new_img = imagecreatefromgif($file_tmp); 
} 
//list width and height and keep height ratio. 
list($width, $height) = getimagesize($file_tmp); 
$imgratio=$width/$height; 
if ($imgratio>1){ 
$newwidth = $ThumbWidth; 
$newheight = $ThumbWidth/$imgratio; 
}else{ 
$newheight = $ThumbWidth; 
$newwidth = $ThumbWidth*$imgratio; 
} 
 
 
$resized_img = imagecreatetruecolor($newwidth,$newheight); 
 
imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
//save image 
Imagepng ($resized_img,"$path_thumbs/$rand_name _mini.png"); 
ImageDestroy ($resized_img); 
ImageDestroy ($new_img); 
//print message 
echo "<br>Image Thumb: <a href=\"$path_thumbs/$rand_name _mini.png\" target=\"_new\" >$path_thumbs/$rand_name _mini.png</a>"; 
} 
 
//upload the big image 
move_uploaded_file ($file_tmp, "$path_big/$rand_name .$file_ext"); 
 
echo "<br>Image Big: <a href=\"$path_big/$rand_name.$file_ext\" target=\"_new\">$path_big/$rand_name .$file_ext</a>"; 
 
echo "<br /><br/><a href=\"$_SERVER[PHP_SELF]\">Revenir a l'envoie de photo</a>"; 
 
}else{ //if the form hasn't been submitted. 
 
//print the form 
echo "<script> 
function view_img(img_name){ 
document[img_name].src = upForm.imgfile.value; 
document[img_name].width = 150; 
} 
</script> 
<br /><h3>Formulaire d'envoie de photos:</h3> 
<form method=\"post\" name=\"upForm\" enctype=\"multipart/form-data\" action=\"$_SERVER[PHP_SELF]\"> 
<input type=\"file\" name=\"imgfile\" onchange=\"javascript:view_img('img_vv');\" /> 
<br /><br /> 
<input type=\"Submit\" name=\"upForm\" value=\"Envoie de l'image\" /> 
<br /><br /> 
<img src='' name='img_vv' width='0'> 
</form>"; 
 
} 
 
echo "</body> 
</html>"; 
 
?>
Si vous avez l'occaz de le diffuser sur le site pour que tout le monde puisseen profiter.

Juste dommange qui ne gere pas les envoies multiples
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 10h50   #16
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Tu ferais mieux d'utiliser la fonction imagecopyresampled plutot que imagecopyresized. Elle prend les même paramètres mais fait des vignettes beaucoup plus jolie.

Code :
imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 11h03   #17
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
ok merci bien
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 11h30   #18
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
résolu
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 11h52   #19
Nouveau Membre du Club
 
Webmaster
Inscription : novembre 2006
Messages : 158
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : novembre 2006
Messages : 158
Points : 27
Points : 27
Envoyer un message via MSN à jiojioforever
Par contre comment on fait pour garder l'url quand on envoie la photo...

En gros je passe par GET l'ID de mon produit pour creer un dossier qui contiendra les images du produit.

Ce qui me fait :

Code :
1
2
3
4
5
6
7
8
9
10
11
$path_thumbs = "../photos/".$_GET['id_lieu'].""; 
$path_big = "../photos/".$_GET['id_lieu'].""; 
 
//check if folders are Writable or not 
//please CHOMD them 777 
if (!is_writeable($path_thumbs)){ 
mkdir ("../photos/".$_GET['id_lieu']."", 0777);  
} 
if (!is_writeable($path_big)){ 
mkdir ("../photos/".$_GET['id_lieu']."", 0777); 
}
Pour à pas de pb. Le dossier avec la réference de mon produit se créée quand on arrive sur la page ou on doit selectionner le fichier.
Maintenant je choisis mon fichier et quand je clique pour l'envoyer mon URL redevient ajout_photo.php alors qu'avant elle était ajout_photo.php?id=101 (pour créer le dosser 101 par exemple)

on peut ajouter un GET sur la form :

Code :
<form method=\"post\" name=\"upForm\" enctype=\"multipart/form-data\" action=\"$_SERVER[PHP_SELF]\">
merci d'avance
jiojioforever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 11h55   #20
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
définit l'action de ton form avec "#", ca veux dire la même page (avec les paramètres).

GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h40.


 
 
 
 
Partenaires

Hébergement Web