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/09/2007, 20h25   #1
Nouveau Membre du Club
 
Inscription : juillet 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 116
Points : 27
Points : 27
Par défaut [ImageMagick] Miniature d'image depuis URL

Bonjour.

Je voudrais savoir si il est possible d'afficher une miniature sur son site à partir d'une image sur internet (avec son url)?

Je viens de créer une galerie ou tout le monde peut y ajouter ses images mais ma galerie les affiches en miniature avec width et height.

Je trouve que le chargement de ma page et trop lent et en plus les miniatures ne sont pas super jolies. Donc je voudrais réaliser un script qui me permet de miniaturiser une image via son lien sur le net.

Merci
VFone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2007, 19h57   #2
Membre chevronné
 
Avatar de djoyeux
 
Inscription : août 2007
Messages : 592
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2007
Messages : 592
Points : 657
Points : 657
Par défaut fonction

voila une fonction que j'ai trouvé sur le net et qui marche trés bien...

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
 
function redimage($img_src,$img_dest,$dst_w,$dst_h) {
   // Lit les dimensions de l'image
   $size = GetImageSize($img_src);
   $src_w = $size[0]; $src_h = $size[1];
   // Teste les dimensions tenant dans la zone
   $test_h = round(($dst_w / $src_w) * $src_h);
   $test_w = round(($dst_h / $src_h) * $src_w);
   // Si Height final non précisé (0)
   if(!$dst_h) $dst_h = $test_h;
   // Sinon si Width final non précisé (0)
   elseif(!$dst_w) $dst_w = $test_w;
   // Sinon teste quel redimensionnement tient dans la zone
   elseif($test_h>$dst_h) $dst_w = $test_w;
   else $dst_h = $test_h;
 
   // Crée une image vierge aux bonnes dimensions
   $dst_im = imagecreatetruecolor($dst_w,$dst_h);
   // Copie dedans l'image initiale redimensionnée
   $src_im = ImageCreateFromJpeg($img_src);
   ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
   // Sauve la nouvelle image
   ImageJpeg($dst_im,$img_dest);
   // Détruis les tampons
   ImageDestroy($dst_im);
   ImageDestroy($src_im);
 
   // Affiche le descritif de la vignette
   echo "SRC='".$img_dest."' WIDTH=".$dst_w." HEIGHT=".$dst_h;
} //fin de création d'imagette
djoyeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 12h51   #3
Nouveau Membre du Club
 
Inscription : juillet 2005
Messages : 116
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 116
Points : 27
Points : 27
C'est très sympa de ta part djoyeux mais comme je suis nouveau dans le monde du php je comprend un peu le code que tu m'as envoyé mais je ne sais aps ou le mettre.

Voici mon code:
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
<?php
(configuration de ma base de donnée)...
 
$sql = mysql_query("SELECT * FROM $table ORDER BY id ASC") or die ("erreur de connexion");
 
$i = 1;
 
// on affiche le résultat
while($resultat = mysql_fetch_array($sql))
{
 
// réception des données
$id = $resultat['id'];
$nom = $resultat['nom'];
$mail = $resultat['mail'];
$url = $resultat['url'];
 
// affichage des données
    echo "<table bgcolor=#e1e1e1 width=130><tr><td align=center>
<a href=mailto:\"".$mail."\"><b>$nom</b></a>
</td></tr><tr><td bgcolor=#FFFFFF align=center height=90>
<a href=\"".$url."\">
<img border=0 src=\"".$url."\" width=105></a>
</td></tr></table></td>	<td align=center>";
 
    if (!($i % 3)) {
        echo '</td></tr><tr>	<td align="center" height=120>';
    }
 
    $i++;
}
 
// on ferme la base de donnée
mysql_close();
 
?>
Merci pour ton aide.
VFone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 15h46   #4
Membre chevronné
 
Avatar de djoyeux
 
Inscription : août 2007
Messages : 592
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2007
Messages : 592
Points : 657
Points : 657
Par défaut inculre ta fonction

bon cette fonction est a inclure dans la page ou tu veux l'utiliser.

Moi personnellement j'ai créer une page php que j'incule apres dans tout les pages ou j'ai toute mes déclarations de variable mais aussi les fonctions dont celle-la.
ça te permet apres de l'appeller à n'importe quelle moment.

apres pour l'utiliser je te montre un bout de mon code.

d'abors créer un repertoire temp avec fullaccess pour stoker tes imagettes et apres voila le code :

Code :
1
2
3
4
5
6
 
    <? if ($res['IMG_INFO'] != "") {
    $IMG_INFO=$res['IMG_INFO']; //il faut mettre le liens vers l'images que tu désire
$tmp_image = str_replace("im_info/","temp/tmp","$IMG_INFO"); // tmp image correspond a ton image une fois travaillé en gros le but est de remplacé pour toi la valeur htt://monsite.fr/images/monimages.jpg par temp/petitmonimage.jpg c'est pour ça que le str_replace est utilisé
    ?>
    <a href="<? echo $IMG_INFO; ?>" target="_blanck"><img <? redimage($IMG_INFO,$tmp_image,180,180)?> style="border:0px" /></a>
Le 180,180 correspond a la taille de l'image que tu veux voire apparaitre.
LE plus difficile pour toi sera de renommer l'image pour la stocker dans ton répertoire. il faut que tu fasse un peu a taton et n'oublie pas les echo qui te permettrons de voir si les chemins d'accès aux images sont juste.

Derniere info n'oublie pas d'activé les module dans le php comme c t indiqué plus haut
djoyeux 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 00h06.


 
 
 
 
Partenaires

Hébergement Web