comment appliquer une fonction en cliquant sur un lien

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : comment appliquer une fonction en cliquant sur un lien

par mankind » 15 juin 2005, 18:15

c'est en php... mais bon, j'ai réussi à faire une vignette en utilisant un autre script trouvé sur phpdébutant.

mon lien :
echo "<a href=test/thumb2.php?fichier=$Array[$i]>$Array[$i]</a><br>";
le nouveau script :
$fichier = ''.$_GET['fichier'].'';
$fichierSource = ''.$fichier.'';
$largeurDestination = 100;
$hauteurDestination = 75;
$im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)
or die ("Erreur lors de la création de l'image");
$source = ImageCreateFromJpeg($fichierSource);
$largeurSource = imagesx($source);
$hauteurSource = imagesy($source);
ImageCopyResampled($im, $source, 8, 8, 0, 0, $largeurDestination-(2*8), $hauteurDestination-(2*8), $largeurSource, $hauteurSource);
ImageString($im, 0, 12, $hauteurDestination-18, "$fichierSource - ($largeurSource x $hauteurSource)", $blanc);
$miniature = "mini_$fichierSource";
ImageJpeg ($im, $miniature);
echo "Image miniature générée: $miniature";


merci cyrano.

je vais voir si je peux m'en servir correctement...

par Cyrano » 15 juin 2005, 17:48

ta ligne <a href=tec... est dans un echo php ou dans une partie html ?

par mankind » 15 juin 2005, 17:42

[quote="Cyrano"]Ton lien modifié tel que tu le présentes envoie en paramètre des variables PHP, pas des valeurs: ça devrait être:
<a href=thumb2.php?fichier=<?php echo($Array[$i]); ?>><?php echo($Array[$i]); ?></a>
mh cette ligne ne fonctionne pas du tout.

par Cyrano » 15 juin 2005, 17:24

Ton lien modifié tel que tu le présentes envoie en paramètre des variables PHP, pas des valeurs: ça devrait être:
<a href=thumb2.php?fichier=<?php echo($Array[$i]); ?>><?php echo($Array[$i]); ?></a>
Je ne suis pas un spécialise de manipulations d'images, mais tu as une ligne qui ne fait rien du tout, il manque le début:
$jpeg ? imagejpeg($newImage,$destinationFileName) : false;

par mankind » 15 juin 2005, 17:16

merci cyrano.

j'ai modifié le lien ainsi :
<a href=thumb2.php?fichier=$Array[$i]>$Array[$i]</a>
(j'ai vérifié que l'url était correctement formée)

sur la page thumb2.php je récupère le nom du fichier ainsi,
$filename = ''.$_GET['fichier'].'';
j'ai vérifié, a priori, les variables $filename et $originalFileName sont correctes. mais rien ne se passe. je me demande comment savoir si c'est la fonction qui ne marche pas ou si c'est moi qui ai mal fait.
Je précise que j'ai une librairie GD v 2.0.
<?php
function createThumb($repSource,$repDest,$filename,$thumbSize="100"){
$originalFileName = $repSource."/test/".$filename;
$destinationFileName = $repDest."/small/".$filename;
$getExtension = explode(".",$originalFileName);
$lastIndex = sizeof($getExtension) - 1;
$extension = $getExtension[$lastIndex];
	if (preg_match("/^JPE?G$/i", $extension)){
		$sourceImage = imagecreatefromjpeg($originalFileName);
		$jpeg = TRUE;
	}
	$imgWidth  = imageSX($sourceImage);
	$imgHeight = imageSY($sourceImage);
	if($imgWidth>$imgHeight)	{
		$finalWidth = $thumbSize;
		$finalHeight = round(($thumbSize/$imgWidth)*$imgHeight);
	} else {
		$finalWidth = round(($thumbSize/$imgHeight)*$imgWidth);
		$finalHeight = $thumbSize;
	}
	$newImage = imagecreatetruecolor($finalWidth,$finalHeight);
	ImageCopyResampled($newImage,$sourceImage,0,0,0,0,$finalWidth,$finalHeight,$imgWidth,$imgHeight);
	$jpeg ? imagejpeg($newImage,$destinationFileName) : false;
	imagedestroy($newImage);
}
?>

par Cyrano » 15 juin 2005, 15:50

Dans le principe: tu fais pointer le lien vers la page qui a la fonction de création de vignette, mais dans l'url du lien, tu ajoutes un parmamètre permettant d'identifier l'image source.

comment appliquer une fonction en cliquant sur un lien

par mankind » 15 juin 2005, 15:35

Hello,

J'ai trouvé une fonction qui permet de lister le contenu d'un répertoire (function DirTri) - qui marche très bien - et une fonction qui permet normalement de créer des vignettes (createThumb ) - je ne l'ai pas encore testée.

Et euh, question bête, comment fait-on pour appliquer la fonction createThumb à une image listée dans mon répertoire (par exemple en cliquant sur le lien créé par la fonction DirTri).

Merci.

Code : Tout sélectionner

// Description : Miniatures en respectant couleurs et homotétie. Sélection de l'image dans un répertoire // ($repSource) et enregistrement dans le répertoire $repDest. // Fonctionne avec jpeget png. A adpater pour d'autres formats. function createThumb($repSource,$repDest,$filename,$thumbSize="100"){ $originalFileName = $repSource."/test".$filename; $destinationFileName = $repDest."/small".$filename; $getExtension = explode(".",$originalFileName); $lastIndex = sizeof($getExtension) - 1; $extension = $getExtension[$lastIndex]; if (preg_match("/^JPE?G$/i", $extension)){ $sourceImage = imagecreatefromjpeg($originalFileName); $jpeg = TRUE; } $imgWidth = imageSX($sourceImage); $imgHeight = imageSY($sourceImage); if($imgWidth>$imgHeight) { $finalWidth = $thumbSize; $finalHeight = round(($thumbSize/$imgWidth)*$imgHeight); } else { $finalWidth = round(($thumbSize/$imgHeight)*$imgWidth); $finalHeight = $thumbSize; } $newImage = imagecreatetruecolor($finalWidth,$finalHeight); ImageCopyResampled($newImage,$sourceImage,0,0,0,0,$finalWidth,$finalHeight,$imgWidth,$imgHeight); $jpeg ? imagejpeg($newImage,$destinationFileName) : false; imagedestroy($newImage); } function DirTri($rep,$tri) { $Array = array(); $dir = opendir($rep); $i=0; while ($File = readdir($dir)){ if($File != "." && $File != ".." && $File != "index.htm") { $Array[] = "$File"; } $i++; } closedir($dir); if($tri == 'DESC'){ rsort($Array); }else{ sort($Array); } $Max = count($Array); for($i = 0; $i != $Max; $i++){ echo "<a href=\"$rep"."$Array[$i]\">$Array[$i]</a><br>"; } echo "<br><br>".$Max." fichier(s)" ; } // utilisation de la fonction // param.1 : chemin du répertoire ("." si il s'agit du rép. courant) // param.2 : ASC ou DESC (A-Z ou Z-A) DirTri("./test/","ASC");