2 #Copyright (C) 2002 Grégory Burri, this software is under GNU GPL see the index.php file for more informations
4 /*--------------------------------------------------
8 gestion d'image, en particulier de redimensionnage
9 ---------------------------------------------------*/
11 /*--------------------------------------------------
15 redimensionne une image pour qu'elle tienne dans un carré
16 de $dim de coté et l'enregistre dans le repertoire $nouveau_chemin
17 $nouveau_chemin contient le nom de l'image : '/tmp/apercu_image.jpg'
18 renvois 0 si il n'y a pas besoin de la redimensionner.
19 $force_rewrite_redim peut prendre 3 valeur =>
20 * 0 : si l'image de sortie existe deja alors ne fait rien (renvois 1)
21 * 1 : si l'image de sortie existe deha et qu'elle a la meme taille alors ne fait rien
22 * 2 : crée de toutes manières l'image de sortie
23 ---------------------------------------------------*/
24 function image_redim ($image_chemin, $dim, $nouveau_chemin, $qualite = 60, $force_rewrite_redim=0)
26 $image = ImageCreateFromJpeg($image_chemin);
28 $hauteur = imageSY($image);
29 $largeur = imageSX($image);
31 if ($hauteur >= $largeur && $hauteur > $dim)
32 $rapport = $dim/$hauteur;
33 else if($largeur > $hauteur && $largeur > $dim)
34 $rapport = $dim/$largeur;
37 $new_hauteur = round($hauteur * $rapport);
38 $new_largeur = round($largeur * $rapport);
40 #si le fichier ne doit pas etre recree si il existe deja
41 if ($force_rewrite_redim==0)
43 #si le fichier existe deja alors ne fait rien
44 if (file_exists($nouveau_chemin)) return 1;
46 else if ($force_rewrite_redim==1)
48 if (file_exists($nouveau_chemin))
50 $image_existe = ImageCreateFromJpeg($nouveau_chemin);
51 if (imageSY($image_existe) == $new_hauteur && imageSX($image_existe) == $new_largeur) return 1;
58 $image_redim = imagecreatetruecolor($new_largeur, $new_hauteur); #l'apercu de l'image (plus petite)
59 imagecopyresampled($image_redim, $image, 0, 0, 0, 0, $new_largeur, $new_hauteur, $largeur, $hauteur);
63 imagejpeg($image_redim, $nouveau_chemin, $qualite); #ecrit l'apercu sur le disque
69 /*--------------------------------------------------
73 Renvois le lien html vers l'image redimensionnée ou l'image
75 ---------------------------------------------------*/
76 function image_lien_html($card)
79 $settings = $glob->get('settings');
80 $link = $glob->get('link');
82 #si le fichier image n'existe pas
83 if (!file_exists($link->path().'DivXDB/images/image_tmp/'.$card->id
.'.jpg'))
85 $fichier_image = fopen($link->path().'DivXDB/images/image_tmp/'.$card->id
.'.jpg', 'wb');
86 if ($card->image
!='') fwrite($fichier_image, $card->image
);
87 fclose($fichier_image);
89 else #sinon essais de le lire
91 #test la validité de l'image (il faudrait trouver une autre manière plus élégante)
92 if(!@getimagesize($link->path().'DivXDB/images/image_tmp/'.$card->id
.'.jpg'))
94 #si l'image n'est pas valide (en tant que jpeg) alors l'efface de la BD
95 mysql_query("update movie set image = '' where id = ".$card->id
, $glob->get('_the_db_'));
96 unlink($link->path().'DivXDB/images/image_tmp/'.$card->id
.'.jpg');
100 $skin_no_image = false;
101 $current_skin_path = $link->path().DIR_SKINS
.'/'.$settings->get('current_skin');
102 #si le film n'a pas d'image'
103 if ($card->image
=='')
105 #si le skin à une image 'no_image.jpg'
106 if (file_exists($current_skin_path .'/no_image.jpg'))
108 $image_path = $current_skin_path .'/no_image.jpg';
109 $skin_no_image = true;
112 $image_path = $link->path().'DivXDB/images/no_image.jpg';
114 else #le film a une image
115 $image_path = $link->path().'DivXDB/images/image_tmp/'.$card->id
.'.jpg';
117 #si la library GD n'est pas installée
118 if ($settings->get('gd_library')=='0')
121 $size = getimagesize($image_path);
125 if ($hauteur >= $largeur && $hauteur > $settings->get('size_image'))
126 $rapport = $settings->get('size_image')/$hauteur;
127 else if($largeur > $hauteur && $largeur > $settings->get('size_image'))
128 $rapport = $settings->get('size_image')/$largeur;
131 $new_hauteur = round($hauteur * $rapport);
132 $new_largeur = round($largeur * $rapport);
134 #si le film n'a pas d'image
135 if ($card->image
=='')
137 #$no_image = $settings
138 $image = '<img alt="'.$card->title
.'" border="0" width="'.$new_largeur.'" height="'.$new_hauteur.'" src="'.$image_path.'"/>';
140 else $image = '<a target="_blank" href="'.$image_path.'"><img alt="'.$card->title
.'" border="0" width="'.$new_largeur.'" height="'.$new_hauteur.'" src="'.$image_path.'"/></a>';
144 if ($skin_no_image) #si le film n'a pas d'image et que le skin a une 'no_image.jpg'
146 if (image_redim__($image_path, $settings->get('size_image'), $current_skin_path .'/'.SMALL_IMAGE_SUFIX
.'no_image.jpg', 60, 1)==0)
147 $image = '<img alt="'.$card->title
.'" src="'.$image_path.'"/>';
149 $image = '<img alt="'.$card->title
.'" src="'.$current_skin_path .'/'.SMALL_IMAGE_SUFIX
.'no_image.jpg'.'"/>';
151 elseif($card->image
=='')
153 if (image_redim__($image_path, $settings->get('size_image'), $link->path().'DivXDB/images/image_tmp/'.SMALL_IMAGE_SUFIX
.'no_image.jpg', 60, 1)==0)
154 $image = '<img alt="'.$card->title
.'" src="'.$image_path.'"/>';
156 $image = '<img alt="'.$card->title
.'" src="'.$link->path().'DivXDB/images/image_tmp/'.SMALL_IMAGE_SUFIX
.'no_image.jpg"/>';
160 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)
161 $image = '<img alt="'.$card->title
.'" src="'.$link->path().'DivXDB/images/image_tmp/'.$card->id
.'.jpg"/>';
163 $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>';