MOD déplacement des fichiers php dans le dossier PHP (sauf index.php)
[cl7.git] / php / fonc_images.php
diff --git a/php/fonc_images.php b/php/fonc_images.php
new file mode 100644 (file)
index 0000000..f001223
--- /dev/null
@@ -0,0 +1,169 @@
+<?php
+#Copyright (C) 2002 Grégory Burri, this software is under GNU GPL see the index.php file for more informations
+
+/*--------------------------------------------------
+auteur : Pifou
+date   : 24.03.2002
+
+gestion d'image, en particulier de redimensionnage
+---------------------------------------------------*/
+
+/*--------------------------------------------------
+auteur : pifou
+date   : 24.03.2002
+
+redimensionne une image pour qu'elle tienne dans un carré
+de $dim de coté et l'enregistre dans le repertoire $nouveau_chemin
+$nouveau_chemin contient le nom de l'image : '/tmp/apercu_image.jpg'
+renvois 0 si il n'y a pas besoin de la redimensionner.
+$force_rewrite_redim peut prendre 3 valeur =>
+* 0 : si l'image de sortie existe deja alors ne fait rien (renvois 1)
+* 1 : si l'image de sortie existe deha et qu'elle a la meme taille alors ne fait rien
+* 2 : crée de toutes manières l'image de sortie
+---------------------------------------------------*/
+function image_redim ($image_chemin, $dim, $nouveau_chemin, $qualite = 60, $force_rewrite_redim=0)
+{
+       $image = ImageCreateFromJpeg($image_chemin);
+       
+       $hauteur = imageSY($image);
+       $largeur = imageSX($image);
+       
+       if ($hauteur >= $largeur && $hauteur > $dim)
+          $rapport = $dim/$hauteur;       
+       else if($largeur > $hauteur && $largeur > $dim)
+          $rapport = $dim/$largeur;    
+       else return 0;  
+       
+       $new_hauteur = round($hauteur * $rapport);
+       $new_largeur = round($largeur * $rapport);
+       
+    #si le fichier ne doit pas etre recree si il existe deja
+    if ($force_rewrite_redim==0)
+       {
+       #si le fichier existe deja alors ne fait rien
+          if (file_exists($nouveau_chemin)) return 1;
+       }
+       else if ($force_rewrite_redim==1)
+       {
+          if (file_exists($nouveau_chemin))    
+          {
+               $image_existe = ImageCreateFromJpeg($nouveau_chemin);   
+                       if (imageSY($image_existe) == $new_hauteur && imageSX($image_existe) == $new_largeur) return 1;    
+          }
+       }
+       
+
+
+               ##gd 2.0 :
+               $image_redim = imagecreatetruecolor($new_largeur, $new_hauteur); #l'apercu de l'image (plus petite)
+               imagecopyresampled($image_redim, $image, 0, 0, 0, 0, $new_largeur, $new_hauteur, $largeur, $hauteur);   
+               ##
+
+       
+   imagejpeg($image_redim, $nouveau_chemin, $qualite); #ecrit l'apercu sur le disque
+       
+       return 1;
+
+}
+
+/*--------------------------------------------------
+auteur : pifou
+date   : 25.01.2003
+
+Renvois le lien html vers l'image redimensionnée ou l'image
+'no_image.jpg'
+---------------------------------------------------*/
+function image_lien_html($card)
+{
+       global $glob;
+       $settings = $glob->get('settings');
+       $link = $glob->get('link');
+
+       #si le fichier image n'existe pas
+       if (!file_exists($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg'))
+       {       
+       $fichier_image = fopen($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg', 'wb');        
+       if ($card->image!='') fwrite($fichier_image, $card->image);                     
+       fclose($fichier_image);
+       }
+       else #sinon essais de le lire
+       {
+               #test la validité de l'image (il faudrait trouver une autre manière plus élégante)
+               if(!@getimagesize($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg'))
+               {
+                       #si l'image n'est pas valide (en tant que jpeg) alors l'efface de la BD
+                       mysql_query("update movie set image = '' where id = ".$card->id, $glob->get('_the_db_'));
+                       unlink($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg');
+               }
+       }
+       
+       $skin_no_image = false;
+       $current_skin_path = $link->path().DIR_SKINS.'/'.$settings->get('current_skin');
+       #si le film n'a pas d'image'
+   if ($card->image=='')
+   {
+               #si le skin à une image 'no_image.jpg'
+       if (file_exists($current_skin_path .'/no_image.jpg'))
+       {
+               $image_path = $current_skin_path .'/no_image.jpg';
+                       $skin_no_image = true;
+       }
+               else
+                       $image_path = $link->path().'DivXDB/images/no_image.jpg';               
+   }
+   else #le film a une image
+       $image_path = $link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg';
+       
+       #si la library GD n'est pas installée
+       if ($settings->get('gd_library')=='0')
+       {
+       
+               $size = getimagesize($image_path);
+               $largeur = $size[0];
+               $hauteur = $size[1];
+               
+       if ($hauteur >= $largeur && $hauteur > $settings->get('size_image'))
+          $rapport = $settings->get('size_image')/$hauteur;       
+       else if($largeur > $hauteur && $largeur > $settings->get('size_image'))
+          $rapport = $settings->get('size_image')/$largeur;    
+       else $rapport = 1;
+
+       $new_hauteur = round($hauteur * $rapport);
+       $new_largeur = round($largeur * $rapport);
+               
+               #si le film n'a pas d'image
+               if ($card->image=='')
+               {
+                       #$no_image = $settings
+                       $image = '<img alt="'.$card->title.'" border="0" width="'.$new_largeur.'" height="'.$new_hauteur.'" src="'.$image_path.'"/>';
+               }
+               else $image = '<a target="_blank" href="'.$image_path.'"><img alt="'.$card->title.'" border="0" width="'.$new_largeur.'" height="'.$new_hauteur.'" src="'.$image_path.'"/></a>';
+       }
+       else
+       {
+               if ($skin_no_image) #si le film n'a pas d'image et que le skin a une 'no_image.jpg'
+               {
+                       if (image_redim__($image_path, $settings->get('size_image'), $current_skin_path .'/'.SMALL_IMAGE_SUFIX.'no_image.jpg', 60, 1)==0)
+                               $image = '<img alt="'.$card->title.'" src="'.$image_path.'"/>';
+                       else
+                               $image = '<img alt="'.$card->title.'" src="'.$current_skin_path .'/'.SMALL_IMAGE_SUFIX.'no_image.jpg'.'"/>';
+               }
+               elseif($card->image=='')
+               {
+                       if (image_redim__($image_path, $settings->get('size_image'), $link->path().'DivXDB/images/image_tmp/'.SMALL_IMAGE_SUFIX.'no_image.jpg', 60, 1)==0)
+                               $image = '<img alt="'.$card->title.'" src="'.$image_path.'"/>';
+                       else
+                               $image = '<img alt="'.$card->title.'" src="'.$link->path().'DivXDB/images/image_tmp/'.SMALL_IMAGE_SUFIX.'no_image.jpg"/>';
+               }
+               else
+               {
+                       if(image_redim__($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg', $settings->get('size_image'), $link->path().'DivXDB/images/image_tmp/'.SMALL_IMAGE_SUFIX.$card->id.'.jpg', 60, 1)==0)
+                               $image = '<img alt="'.$card->title.'" src="'.$link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg"/>';
+                       else
+                               $image = '<a target="_blank" href="'.$link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg"><img alt="'.$card->title.'" border="0" src="'.$link->path().'DivXDB/images/image_tmp/'.SMALL_IMAGE_SUFIX.$card->id.'.jpg"/></a>';
+               
+               }
+       }
+       return $image;
+}
+?>