|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
medium69 WRInaute accro

Inscrit le: 07 Mai 2005 Messages: 2151 Localisation: Je sais pas trop ;)
|
Posté le : Mar Nov 28, 2006 0:43 Sujet du message: [script] Création de vignette jpeg ou png |
|
|
Je vous laisse un petit script que je me suis adapté pour mes besoins personnel.
Il permet de créer une vignette à partir d'une image originale.
La vignette est enregistré sur le serveur et ne peut être supérieure à la taille de l'original.
Le script prend en compte les images png et jpeg (le gif n'étant plus dans le domaine libre).
Vous me direz ainsi si je peux l'optimiser un peu
| Code: |
/**********************************************************************
- vignette($file, $maxWidth = 450, $maxHeight = 350)
- Création d'une vignette à partir d'une image ($file)
- Les extension prise en compte sont jpg et png (le gif est remplacé par le png ; le gif animé n'est jamais redimensionné)
- Dernière version : 27/11/2006
* $file : chemin vers le fichier image à redimensionner
* $maxWidth : largeur maximum que dois faire la miniature (450 par défaut)
* $maxHeight : Hauteur maximum que dois faire l'image (350 par défaut)
**********************************************************************/
function vignette($file, $maxWidth = 450, $maxHeight = 350){
// Vérification des erreurs dans les paramètres de la fonction
//============================================================
if(!file_exists($file)){
// Si le fichier passé en paramètre n'existe pas
return 'Le fichier '.$file.' n\'a pas été trouvé sur le serveur.';
}
elseif(empty($file)){
// Si le fichier n'a pas été indiqué
return 'Nom du fichier non renseigné.';
}
elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < 0){
// Si la largeur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
return 'Valeur de la largeur incorrecte.';
}
elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < 0){
// Si la hauteur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
return 'Valeur de la hauteur incorrecte.';
}
//============================================================
$fichier = realpath($file); // Chemin canonique absolu de l'image
$dir = dirname($file).'/'; // Chemin du dossier contenant l'image
$infoImg = getimagesize($fichier); // Récupération des infos de l'image
$imgWidth = $infoImg[0]; // Largeur de l'image
$imgHeight = $infoImg[1]; // Hauteur de l'image
// Initialisation des variables selon l'extension de l'image
switch($infoImg[2]){
case 2:
$img = imagecreatefromjpeg($fichier); // Création d'une nouvelle image jpeg à partir du fichier
$extImg = '.jpg'; // Extension de l'image
break;
case 3:
$img = imagecreatefrompng($fichier); // Création d'une nouvelle image png à partir du fichier
$extImg = '.png';
}
// Initialisation des dimensions de la vignette si elles sont supérieures à l'original
if($maxWidth > $imgWidth){ $maxWidth = $imgWidth; }
if($maxHeight > $imgHeight){ $maxHeight = $imgHeight; }
$whFact = $maxWidth/$maxHeight; // Facteur largeur/hauteur des dimensions max de la vignette
$imgWhFact = $imgWidth/$imgHeight; // Facteur largeur/hauteur de l'original
// Fixe les dimensions de la vignette
if($whFact < $imgWhFact){
// Si largeur déterminante
$thumbWidth = $maxWidth;
$thumbHeight = $thumbWidth / $imgWhFact;
} else {
// Si hauteur déterminante
$thumbHeight = $maxHeight;
$thumbWidth = $thumbHeight * $imgWhFact;
}
$imgThumb = imagecreatetruecolor($thumbWidth, $thumbHeight); // Création de la vignette
imagecopyresized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight); // Insère l'image de base redimensionnée
$fileName = basename($file, $extImg); // Nom du fichier sans son extension
$imgThumbName = $dir.$fileName.'-min'.$extImg; // Chemin complet du fichier de la vignette
//Création du fichier de la vignette
$fp = fopen($imgThumbName, "w");
fclose($fp);
// Renvoi la vignette créée
switch($infoImg[2]){
case 2:
imagejpeg($imgThumb, $imgThumbName, 50); // Renvoi d'une image jpeg avec une qualité de 50
break;
case 3:
imagepng($imgThumb, $imgThumbName);
}
return $imgThumbName;
} |
 |
|
| |
|
 |
e-kiwi Modérateur

Inscrit le: 23 Déc 2003 Messages: 12627 Localisation: Toulouse
|
Posté le : Mar Nov 28, 2006 8:17 Sujet du message: [script] Création de vignette jpeg ou png |
|
|
Bonjour,
si vous etes intérréssé, j'ai le script qui genere une image copyrighté (il suffit de donner le chemin du logo et sa position dans l'image finale) |
|
| |
|
 |
apiphoto WRInaute impliqué

Inscrit le: 29 Avr 2006 Messages: 385 Localisation: St Morillon, Gironde, France
|
Posté le : Mar Nov 28, 2006 9:08 Sujet du message: [script] Création de vignette jpeg ou png |
|
|
| e-kiwi a écrit: |
Bonjour,
si vous etes intérréssé, j'ai le script qui genere une image copyrighté (il suffit de donner le chemin du logo et sa position dans l'image finale) |
Bonjour,
Oui c'est un script qui m'intéresse.
Pour l'instant je travail en amont avec Photoshop mais j'ai un site en préparation pour lequel cela me serait très utile.
Merci
Et je testerai le script précédent aussi.
Merci |
|
| |
|
 |
La Chaise sauvage WRInaute passionné

Inscrit le: 11 Avr 2005 Messages: 664 Localisation: Saint Martin du Var
|
Posté le : Mar Nov 28, 2006 9:18 Sujet du message: Re: [script] Création de vignette jpeg ou png |
|
|
| medium69 a écrit: |
Le script prend en compte les images png et jpeg (le gif n'étant plus dans le domaine libre). |
http://gnu.fyxm.net/philosophy/gif.fr.html#venuenote
| Citation: |
Le brevet Unisys a expiré le 20 juin 2003 aux États-Unis; en Europe, le 18 juin 2004; au Japon, le 20 juin 2004 et au Canada, le 7 juillet 2004. Le brevet américain de IBM a expiré le 11 août 2006. Le Software Freedom Law Center dit qu'après le 1er octobre 2006, il n'y aura plus de revendication de brevet significative pour interférer avec l'emploi du format GIF. |
.. et imagecreatefromgif marche très bien  |
|
| |
|
 |
rog WRInaute accro

Inscrit le: 21 Sep 2006 Messages: 1662 Localisation: sapucaia do sul (RS)
|
Posté le : Mar Nov 28, 2006 10:43 Sujet du message: [script] Création de vignette jpeg ou png |
|
|
yep
moi j'en ai fait un qui met à jour un dossier mirroir
tu lances le script et il update le dossier à l'identique et en passant efface les vignettes dont les images ont disparues
je le publierai quand j'aurai fini mon site et surtout quand ovh voudra bien me livrer le dedié que j'ai commandé et payé depuis plus de deux mois
rog |
|
| |
|
 |
Tilt WRInaute passionné

Inscrit le: 26 Mar 2005 Messages: 758
|
Posté le : Mar Nov 28, 2006 12:31 Sujet du message: Re: [script] Création de vignette jpeg ou png |
|
|
| medium69 a écrit: |
Vous me direz ainsi si je peux l'optimiser un peu
|
Oui, c'est le script de la doc php, à ceci près que la doc conseille de remplacer imagecopyresized par imagecreatetruecolor (http://www.php.net/imagecopyresized). |
|
| |
|
 |
ecocentric WRInaute accro

Inscrit le: 10 Fév 2004 Messages: 3418 Localisation: Mons
|
Posté le : Mar Nov 28, 2006 12:34 Sujet du message: [script] Création de vignette jpeg ou png |
|
|
| Le brevet du GIF est tombé dans le domaine public depuis quelques temps déjà. |
|
| |
|
 |
La Chaise sauvage WRInaute passionné

Inscrit le: 11 Avr 2005 Messages: 664 Localisation: Saint Martin du Var
|
Posté le : Mar Nov 28, 2006 13:07 Sujet du message: Re: [script] Création de vignette jpeg ou png |
|
|
| Tilt a écrit: |
| medium69 a écrit: |
Vous me direz ainsi si je peux l'optimiser un peu
|
Oui, c'est le script de la doc php, à ceci près que la doc conseille de remplacer imagecopyresized par imagecreatetruecolor (http://www.php.net/imagecopyresized). |
hum nan. imagecopyresized est remplacé par imagecopyresampled
 |
|
| |
|
 |
medium69 WRInaute accro

Inscrit le: 07 Mai 2005 Messages: 2151 Localisation: Je sais pas trop ;)
|
Posté le : Mar Nov 28, 2006 13:13 Sujet du message: Re: [script] Création de vignette jpeg ou png |
|
|
| La Chaise sauvage a écrit: |
| medium69 a écrit: |
Le script prend en compte les images png et jpeg (le gif n'étant plus dans le domaine libre). |
http://gnu.fyxm.net/philosophy/gif.fr.html#venuenote
| Citation: |
Le brevet Unisys a expiré le 20 juin 2003 aux États-Unis; en Europe, le 18 juin 2004; au Japon, le 20 juin 2004 et au Canada, le 7 juillet 2004. Le brevet américain de IBM a expiré le 11 août 2006. Le Software Freedom Law Center dit qu'après le 1er octobre 2006, il n'y aura plus de revendication de brevet significative pour interférer avec l'emploi du format GIF. |
.. et imagecreatefromgif marche très bien  |
Je n'ai jamais prétendu que imagecreatefromgif ne marchait pas.
Je n'étais pas au courant du problème de revendication du brevet
Cela dit, ont peut sans problème redimensionner un gif simple (il suffit d'ajouter cette partie dans le code) ainsi que tout les autres formats d'images (je me suis limité au plus courant sur le web)
On ne peut cependant pas miniaturisé un gif animé avec cette méthode ; c'est ce qui à également motivé mon choix pour le remplacement du gif simple par png.
Je suis ouvert à une solution pour redimensionné à la demande un gif animé si quelqu'un à une solution |
|
| |
|
 |
medium69 WRInaute accro

Inscrit le: 07 Mai 2005 Messages: 2151 Localisation: Je sais pas trop ;)
|
Posté le : Mar Nov 28, 2006 13:13 Sujet du message: [script] Création de vignette jpeg ou png |
|
|
| e-kiwi a écrit: |
Bonjour,
si vous etes intérréssé, j'ai le script qui genere une image copyrighté (il suffit de donner le chemin du logo et sa position dans l'image finale) |
C'est une partie que je n'ai pas encore étudiée, mais qui m'intéresse.
Si tu peux nous donner le script  |
|
| |
|
 |
medium69 WRInaute accro

Inscrit le: 07 Mai 2005 Messages: 2151 Localisation: Je sais pas trop ;)
|
Posté le : Mar Nov 28, 2006 13:16 Sujet du message: Re: [script] Création de vignette jpeg ou png |
|
|
| Tilt a écrit: |
| medium69 a écrit: |
Vous me direz ainsi si je peux l'optimiser un peu
|
Oui, c'est le script de la doc php, à ceci près que la doc conseille de remplacer imagecopyresized par imagecreatetruecolor (http://www.php.net/imagecopyresized). |
Il est loin d'être identique il me semble  |
|
| |
|
 |
La Chaise sauvage WRInaute passionné

Inscrit le: 11 Avr 2005 Messages: 664 Localisation: Saint Martin du Var
|
Posté le : Mar Nov 28, 2006 13:17 Sujet du message: Re: [script] Création de vignette jpeg ou png |
|
|
| medium69 a écrit: |
On ne peut cependant pas miniaturisé un gif animé avec cette méthode ; c'est ce qui à également motivé mon choix pour le remplacement du gif simple par png.
Je suis ouvert à une solution pour redimensionné à la demande un gif animé si quelqu'un à une solution |
je suis en train de bosser sur la question justement... mais ce n'est pas vraiment montrable en l'état... à suivre |
|
| |
|
 |
medium69 WRInaute accro

Inscrit le: 07 Mai 2005 Messages: 2151 Localisation: Je sais pas trop ;)
|
Posté le : Mar Nov 28, 2006 13:18 Sujet du message: Re: [script] Création de vignette jpeg ou png |
|
|
Je vois qu'il faudrait remplacer par imagecopyresized
imagecopyresampled ou imagecreatetruecolor
quels sont les changements qui y sont bénéfiques ? |
|
| |
|
 |
medium69 WRInaute accro

Inscrit le: 07 Mai 2005 Messages: 2151 Localisation: Je sais pas trop ;)
|
Posté le : Mar Nov 28, 2006 13:19 Sujet du message: Re: [script] Création de vignette jpeg ou png |
|
|
| La Chaise sauvage a écrit: |
| medium69 a écrit: |
On ne peut cependant pas miniaturisé un gif animé avec cette méthode ; c'est ce qui à également motivé mon choix pour le remplacement du gif simple par png.
Je suis ouvert à une solution pour redimensionné à la demande un gif animé si quelqu'un à une solution |
je suis en train de bosser sur la question justement... mais ce n'est pas vraiment montrable en l'état... à suivre |
Retiens mon pseusdo car si tu y arrives cela m'intéresse au plus au point  |
|
| |
|
 |
La Chaise sauvage WRInaute passionné

Inscrit le: 11 Avr 2005 Messages: 664 Localisation: Saint Martin du Var
|
Posté le : Mar Nov 28, 2006 13:22 Sujet du message: [script] Création de vignette jpeg ou png |
|
|
| check tes messages privés |
|
| |
|
 |
| |
|
|