Nous sommes actuellement le 10 Juil 2026, 15:27

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 6 message(s) ] 
Auteur Message
 Sujet du message: PHP et GD - Test JPG
MessagePublié: 20 Avr 2005, 19:42 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 25 Jan 2002, 06:05
Message(s) : 502
Localisation : Montréal
Bonjour à tous,

Voilà, j'ai créé une fonction PHP avec la librairie GD. Cette fonction permet d'uploader une image et de la redimensionner.

Je voudrais savoir s'il y a un moyen, autre qu'avec un test sur l'extension, de savoir si un fichier est vraiment un JPG.

Je m'explique, supposons que quelqu'un essaie d'uploader un fichier Word renommé avec l'extension .JPG, y a-t-il moyen de faire traiter ça par le script?

Merci,

Simo

Fonction utilisée :
Code :
function fnUploadResize($fieldName, $destinationDirectory, $imageName, $dWidth, $dHeight)
{
   ///////// CONSTANTES \\\\\\\\\\\\\
   $tmpFilename = $_FILES[$fieldName]['tmp_name'];
   $uploadDir = $destinationDirectory;      
   $uploadFile = $uploadDir . $imageName;
   $defaultWidth = $dWidth;
   $defaultHeight = $dHeight;
   $defaultRatio = $defaultWidth / $defaultHeight;
   
   ///////// OBTENIR LES DIMENSIONS DE L'IMAGE UPLOADÉE \\\\\\\\\\\\\
   $imgSize = GetImageSize($tmpFilename);
   $width = $imgSize[0];
   $height = $imgSize[1];
   $newRatio = $width / $height;
   
   ///////// RECHERCHER LES NOUVELLES DIMENSIONS \\\\\\\\\\\\\
   if ($newRatio >= $defaultRatio)
   {
      $newWidth = $defaultWidth;
      $newHeight = round($defaultWidth / $newRatio);
   }
   else
   {
      $newWidth = round($defaultHeight * $newRatio);
      $newHeight = $defaultHeight;
   }
   
   ///////// REDIMENSIONNER L'IMAGE \\\\\\\\\\\\\
   $imageCanvas = imagecreatetruecolor($newWidth, $newHeight);
   $imageContent = imagecreatefromjpeg($tmpFilename);
   imagecopyresampled($imageCanvas, $imageContent, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
   imagejpeg($imageCanvas, $uploadFile, 75)

}

_________________
Desktop : Core2 Duo E8600 3.33GHz - 8GB DDR3 - 2x NVIDIA GeForce 9600 GT - 3x Fujitsu 22" - Win7 Ultimate
Laptop - Asus V1V : Core2 Duo P8600 2.4GHz - 4GB DDR2 - ATI Mobility Radeo HD 3650 - Win7 Ultimate
Tablet - Asus Transformer Prime : NVIDIA Tegra 3 Quad-core - 1GB - Android ICS


Dernière édition par Simo Bk le 21 Avr 2005, 14:03, édité 1 fois.

Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 20 Avr 2005, 19:49 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 11:31
Message(s) : 811
Localisation : Still on Mars
Salut,

Je ne suis pas certain mais je crois que tout les JPG contiennent PJFIF et tout les giff 'GIFF' dans leur source.
// Ce que j'ai remarquer apres avoir ouvert 10 images dans un editeur text.


Tu peux donc ouvrir le fichier et faire une recherche pour les kword appropier. Il te reste juste a verifier l'info que je viends de te donnees.

_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 21 Avr 2005, 12:50 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 25 Jan 2002, 06:05
Message(s) : 502
Localisation : Montréal
Interessant, mais je ne suis pas sur que ca constitue la meilleure méthode :
1. Je ne trouve pas d'info qui me permettrait d'affirmer que tous les JPEG contiennent ce string.
2. Au niveau ressource, ca risque d'être un resource hog d'aller à chaque fois à travers tous les fichiers à la recherche d'un string.

N'y a-t-il pas une méthode dans la librairie de GD pour faire ça?

Merci,

Simo

_________________
Desktop : Core2 Duo E8600 3.33GHz - 8GB DDR3 - 2x NVIDIA GeForce 9600 GT - 3x Fujitsu 22" - Win7 Ultimate
Laptop - Asus V1V : Core2 Duo P8600 2.4GHz - 4GB DDR2 - ATI Mobility Radeo HD 3650 - Win7 Ultimate
Tablet - Asus Transformer Prime : NVIDIA Tegra 3 Quad-core - 1GB - Android ICS


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 21 Avr 2005, 16:52 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Simo Bk a écrit:
1. Je ne trouve pas d'info qui me permettrait d'affirmer que tous les JPEG contiennent ce string.
2. Au niveau ressource, ca risque d'être un resource hog d'aller à chaque fois à travers tous les fichiers à la recherche d'un string.


http://www.astro.keele.ac.uk/~rno/Compu ... magic.html
http://www.geocities.com/marcoschmidt.g ... ormat.html
http://www.ijg.org/
http://www.jpeg.org/jpeg/

C'est binaire ce format de fichier. Tu pourras donc aller lire directement les bytes voulus pour connaître leur valeur.

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 22 Avr 2005, 07:21 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 11:31
Message(s) : 811
Localisation : Still on Mars
Bon voila une reponse plus serieuse que ma premiere ;)

Utilise getimagesize
Elle retourne plein d'info sur l'image dont le type.
http://ca.php.net/manual/en/function.getimagesize.php

Je croyais que tu voulais pas le faire via GD.

_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Avr 2005, 12:52 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 25 Jan 2002, 06:05
Message(s) : 502
Localisation : Montréal
Merci pour ta réponse, c'est ce que j'avais fait finalement... En fait, ce qui m'a vraiment dépanné, c'est d'apprendre le role du @ avant une fonction (@getimagesize()) pour éviter les messages d'erreur. Là c'est parfait :)

Merci encore,

Simo

PS: Désolé si je tarde à confirmer mes réponses, ces temps ci, je ne sais pas pkoi mais je ne reçois plus tout le temps d'alertes quand une réponse est postée?

_________________
Desktop : Core2 Duo E8600 3.33GHz - 8GB DDR3 - 2x NVIDIA GeForce 9600 GT - 3x Fujitsu 22" - Win7 Ultimate
Laptop - Asus V1V : Core2 Duo P8600 2.4GHz - 4GB DDR2 - ATI Mobility Radeo HD 3650 - Win7 Ultimate
Tablet - Asus Transformer Prime : NVIDIA Tegra 3 Quad-core - 1GB - Android ICS


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 6 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site